; w65c02 assembly code for 'test_word_lt' ; generated by prog8.codegen.cpu6502.ProgramAndVarsGen on 2024-03-13T21:14:49 ; assembler syntax is for the 64tasm cross-assembler ; output options: output=PRG launcher=BASIC zp=DONTUSE .cpu 'w65c02' .enc 'none' P8ZP_SCRATCH_B1 = 122 P8ZP_SCRATCH_REG = 123 P8ZP_SCRATCH_W1 = 124 ; word P8ZP_SCRATCH_W2 = 126 ; word .weak .endweak ; ---- basic program with sys call ---- * = $0801 .word (+), 2024 .null $9e, format(' %d ', prog8_entrypoint), $3a, $8f, ' prog8' + .word 0 prog8_entrypoint ; assembly code starts here jsr sys.init_system_phase2 lda #4 sta $01 jsr p8b_main.p8s_start jmp sys.cleanup_at_exit ; ---- block: 'p8b_main' ---- p8b_main .proc ; source: test_word_lt.p8:8 main { ; non-zeropage variables without initialization value .section BSS p8v_comparison .word ? p8v_success .byte ? .send BSS ; non-zeropage variables p8v_datatype ; PETSCII:"word" .byte $57, $4f, $52, $44, $00 ; source: test_word_lt.p8:9 ubyte success = 0 ; source: test_word_lt.p8:10 str datatype = "word" ; source: test_word_lt.p8:11 uword @shared comparison ; source: test_word_lt.p8:13 sub start() { p8s_start .proc ; program startup initialization cld tsx stx prog8_lib.orig_stackpointer ; required for sys.exit() .if prog8_bss_section_size>0 ; reset all variables in BSS section to zero lda #prog8_bss_section_start sta P8ZP_SCRATCH_W1 sty P8ZP_SCRATCH_W1+1 ldx #prog8_bss_section_size lda #0 jsr prog8_lib.memset .endif jsr p8b_main.prog8_init_vars + clv clc ; statements ; source: test_word_lt.p8:14 txt.print("\nless-than tests for: ") ldy #>prog8_interned_strings.string_1 lda #p8b_main.p8v_datatype lda #prog8_interned_strings.string_2 lda #prog8_interned_strings.string_3 lda #prog8_interned_strings.string_4 lda #prog8_interned_strings.string_5 lda #prog8_interned_strings.string_7 lda #prog8_interned_strings.string_8 lda #prog8_interned_strings.string_9 lda #prog8_interned_strings.string_10 lda #-$5545 sta p8v_x sty p8v_x+1 ; source: test_word_lt.p8:76 if x<-21829 cmp #<-$5545 tya sbc #>-$5545 bvc + eor #128 + bmi p8l_lbl1a ; source: test_word_lt.p8:78 goto skip1a bra p8l_skip1a ; source: test_word_lt.p8:79 lbl1a: fail_word(1) p8l_lbl1a ldy #>1 lda #<1 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:80 skip1a: p8l_skip1a ; source: test_word_lt.p8:82 cx16.r3 = &lbl1b lda #p8l_lbl1b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:83 if x<-21829 ldy p8v_x+1 lda p8v_x cmp #<-$5545 tya sbc #>-$5545 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:85 goto skip1b bra p8l_skip1b ; source: test_word_lt.p8:86 lbl1b: fail_word(2) p8l_lbl1b ldy #>2 lda #<2 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:87 skip1b: p8l_skip1b ; source: test_word_lt.p8:89 if x<-21829 ldy p8v_x+1 lda p8v_x cmp #<-$5545 tya sbc #>-$5545 bvs + eor #128 + bmi label_asm_3_afterif ; source: test_word_lt.p8:90 fail_word(3) ldy #>3 lda #<3 jsr p8b_main.p8s_fail_word label_asm_3_afterif ; source: test_word_lt.p8:93 if x<-21829 ldy p8v_x+1 lda p8v_x cmp #<-$5545 tya sbc #>-$5545 bvs + eor #128 + bmi label_asm_5_else ; source: test_word_lt.p8:94 fail_word(4) ldy #>4 lda #<4 jsr p8b_main.p8s_fail_word bra label_asm_4_afterif label_asm_5_else ; source: test_word_lt.p8:96 success++ inc p8b_main.p8v_success label_asm_4_afterif ; source: test_word_lt.p8:99 if x<-1 ldy p8v_x+1 lda p8v_x cmp #<-1 tya sbc #>-1 bvc + eor #128 + bmi p8l_lbl2a ; source: test_word_lt.p8:101 goto skip2a bra p8l_skip2a ; source: test_word_lt.p8:102 lbl2a: success++ p8l_lbl2a inc p8b_main.p8v_success ; source: test_word_lt.p8:103 skip2a: p8l_skip2a ; source: test_word_lt.p8:105 cx16.r3 = &lbl2b lda #p8l_lbl2b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:106 if x<-1 ldy p8v_x+1 lda p8v_x cmp #<-1 tya sbc #>-1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:108 goto skip2b bra p8l_skip2b ; source: test_word_lt.p8:109 lbl2b: success++ p8l_lbl2b inc p8b_main.p8v_success ; source: test_word_lt.p8:110 skip2b: p8l_skip2b ; source: test_word_lt.p8:112 if x<-1 ldy p8v_x+1 lda p8v_x cmp #<-1 tya sbc #>-1 bvs + eor #128 + bmi label_asm_6_afterif ; source: test_word_lt.p8:113 success++ inc p8b_main.p8v_success label_asm_6_afterif ; source: test_word_lt.p8:116 if x<-1 ldy p8v_x+1 lda p8v_x cmp #<-1 tya sbc #>-1 bvs + eor #128 + bmi label_asm_8_else ; source: test_word_lt.p8:117 success++ inc p8b_main.p8v_success bra label_asm_7_afterif label_asm_8_else ; source: test_word_lt.p8:119 cx16.r0L++ inc cx16.r0L label_asm_7_afterif ; source: test_word_lt.p8:122 if x<0 lda p8v_x+1 bmi p8l_lbl3a ; source: test_word_lt.p8:124 goto skip3a bra p8l_skip3a ; source: test_word_lt.p8:125 lbl3a: success++ p8l_lbl3a inc p8b_main.p8v_success ; source: test_word_lt.p8:126 skip3a: p8l_skip3a ; source: test_word_lt.p8:128 cx16.r3 = &lbl3b lda #p8l_lbl3b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:129 if x<0 lda p8v_x+1 bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:131 goto skip3b bra p8l_skip3b ; source: test_word_lt.p8:132 lbl3b: success++ p8l_lbl3b inc p8b_main.p8v_success ; source: test_word_lt.p8:133 skip3b: p8l_skip3b ; source: test_word_lt.p8:135 if x<0 lda p8v_x+1 bpl label_asm_9_afterif ; source: test_word_lt.p8:136 success++ inc p8b_main.p8v_success label_asm_9_afterif ; source: test_word_lt.p8:139 if x<0 lda p8v_x+1 bpl label_asm_11_else ; source: test_word_lt.p8:140 success++ inc p8b_main.p8v_success bra label_asm_10_afterif label_asm_11_else ; source: test_word_lt.p8:142 cx16.r0L++ inc cx16.r0L label_asm_10_afterif ; source: test_word_lt.p8:145 if x<1 lda p8b_main.p8s_test_cmp_number.p8v_x+1 bmi p8l_lbl4a bne + lda p8b_main.p8s_test_cmp_number.p8v_x beq p8l_lbl4a + ; source: test_word_lt.p8:147 goto skip4a bra p8l_skip4a ; source: test_word_lt.p8:148 lbl4a: success++ p8l_lbl4a inc p8b_main.p8v_success ; source: test_word_lt.p8:149 skip4a: p8l_skip4a ; source: test_word_lt.p8:151 cx16.r3 = &lbl4b lda #p8l_lbl4b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:152 if x<1 lda p8b_main.p8s_test_cmp_number.p8v_x+1 bmi + bne ++ lda p8b_main.p8s_test_cmp_number.p8v_x bne ++ + jmp (cx16.r3) + ; source: test_word_lt.p8:154 goto skip4b bra p8l_skip4b ; source: test_word_lt.p8:155 lbl4b: success++ p8l_lbl4b inc p8b_main.p8v_success ; source: test_word_lt.p8:156 skip4b: p8l_skip4b ; source: test_word_lt.p8:158 if x<1 lda p8b_main.p8s_test_cmp_number.p8v_x+1 bmi + bne label_asm_12_afterif lda p8b_main.p8s_test_cmp_number.p8v_x bne label_asm_12_afterif + ; source: test_word_lt.p8:159 success++ inc p8b_main.p8v_success label_asm_12_afterif ; source: test_word_lt.p8:162 if x<1 lda p8b_main.p8s_test_cmp_number.p8v_x+1 bmi + bne label_asm_14_else lda p8b_main.p8s_test_cmp_number.p8v_x bne label_asm_14_else + ; source: test_word_lt.p8:163 success++ inc p8b_main.p8v_success bra label_asm_13_afterif label_asm_14_else ; source: test_word_lt.p8:165 cx16.r0L++ inc cx16.r0L label_asm_13_afterif ; source: test_word_lt.p8:168 if x<170 ldy p8v_x+1 lda p8v_x cmp #<$aa tya sbc #>$aa bvc + eor #128 + bmi p8l_lbl5a ; source: test_word_lt.p8:170 goto skip5a bra p8l_skip5a ; source: test_word_lt.p8:171 lbl5a: success++ p8l_lbl5a inc p8b_main.p8v_success ; source: test_word_lt.p8:172 skip5a: p8l_skip5a ; source: test_word_lt.p8:174 cx16.r3 = &lbl5b lda #p8l_lbl5b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:175 if x<170 ldy p8v_x+1 lda p8v_x cmp #<$aa tya sbc #>$aa bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:177 goto skip5b bra p8l_skip5b ; source: test_word_lt.p8:178 lbl5b: success++ p8l_lbl5b inc p8b_main.p8v_success ; source: test_word_lt.p8:179 skip5b: p8l_skip5b ; source: test_word_lt.p8:181 if x<170 ldy p8v_x+1 lda p8v_x cmp #<$aa tya sbc #>$aa bvs + eor #128 + bmi label_asm_15_afterif ; source: test_word_lt.p8:182 success++ inc p8b_main.p8v_success label_asm_15_afterif ; source: test_word_lt.p8:185 if x<170 ldy p8v_x+1 lda p8v_x cmp #<$aa tya sbc #>$aa bvs + eor #128 + bmi label_asm_17_else ; source: test_word_lt.p8:186 success++ inc p8b_main.p8v_success bra label_asm_16_afterif label_asm_17_else ; source: test_word_lt.p8:188 cx16.r0L++ inc cx16.r0L label_asm_16_afterif ; source: test_word_lt.p8:191 if x<30464 ldy p8v_x+1 lda p8v_x cmp #<$7700 tya sbc #>$7700 bvc + eor #128 + bmi p8l_lbl6a ; source: test_word_lt.p8:193 goto skip6a bra p8l_skip6a ; source: test_word_lt.p8:194 lbl6a: success++ p8l_lbl6a inc p8b_main.p8v_success ; source: test_word_lt.p8:195 skip6a: p8l_skip6a ; source: test_word_lt.p8:197 cx16.r3 = &lbl6b lda #p8l_lbl6b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:198 if x<30464 ldy p8v_x+1 lda p8v_x cmp #<$7700 tya sbc #>$7700 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:200 goto skip6b bra p8l_skip6b ; source: test_word_lt.p8:201 lbl6b: success++ p8l_lbl6b inc p8b_main.p8v_success ; source: test_word_lt.p8:202 skip6b: p8l_skip6b ; source: test_word_lt.p8:204 if x<30464 ldy p8v_x+1 lda p8v_x cmp #<$7700 tya sbc #>$7700 bvs + eor #128 + bmi label_asm_18_afterif ; source: test_word_lt.p8:205 success++ inc p8b_main.p8v_success label_asm_18_afterif ; source: test_word_lt.p8:208 if x<30464 ldy p8v_x+1 lda p8v_x cmp #<$7700 tya sbc #>$7700 bvs + eor #128 + bmi label_asm_20_else ; source: test_word_lt.p8:209 success++ inc p8b_main.p8v_success bra label_asm_19_afterif label_asm_20_else ; source: test_word_lt.p8:211 cx16.r0L++ inc cx16.r0L label_asm_19_afterif ; source: test_word_lt.p8:214 if x<32767 ldy p8v_x+1 lda p8v_x cmp #<$7fff tya sbc #>$7fff bvc + eor #128 + bmi p8l_lbl7a ; source: test_word_lt.p8:216 goto skip7a bra p8l_skip7a ; source: test_word_lt.p8:217 lbl7a: success++ p8l_lbl7a inc p8b_main.p8v_success ; source: test_word_lt.p8:218 skip7a: p8l_skip7a ; source: test_word_lt.p8:220 cx16.r3 = &lbl7b lda #p8l_lbl7b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:221 if x<32767 ldy p8v_x+1 lda p8v_x cmp #<$7fff tya sbc #>$7fff bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:223 goto skip7b bra p8l_skip7b ; source: test_word_lt.p8:224 lbl7b: success++ p8l_lbl7b inc p8b_main.p8v_success ; source: test_word_lt.p8:225 skip7b: p8l_skip7b ; source: test_word_lt.p8:227 if x<32767 ldy p8v_x+1 lda p8v_x cmp #<$7fff tya sbc #>$7fff bvs + eor #128 + bmi label_asm_21_afterif ; source: test_word_lt.p8:228 success++ inc p8b_main.p8v_success label_asm_21_afterif ; source: test_word_lt.p8:231 if x<32767 ldy p8v_x+1 lda p8v_x cmp #<$7fff tya sbc #>$7fff bvs + eor #128 + bmi label_asm_23_else ; source: test_word_lt.p8:232 success++ inc p8b_main.p8v_success bra label_asm_22_afterif label_asm_23_else ; source: test_word_lt.p8:234 cx16.r0L++ inc cx16.r0L label_asm_22_afterif ; source: test_word_lt.p8:236 x=-1 lda #<-1 ldy #>-1 sta p8v_x sty p8v_x+1 ; source: test_word_lt.p8:238 if x<-21829 cmp #<-$5545 tya sbc #>-$5545 bvc + eor #128 + bmi p8l_lbl8a ; source: test_word_lt.p8:240 goto skip8a bra p8l_skip8a ; source: test_word_lt.p8:241 lbl8a: fail_word(5) p8l_lbl8a ldy #>5 lda #<5 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:242 skip8a: p8l_skip8a ; source: test_word_lt.p8:244 cx16.r3 = &lbl8b lda #p8l_lbl8b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:245 if x<-21829 ldy p8v_x+1 lda p8v_x cmp #<-$5545 tya sbc #>-$5545 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:247 goto skip8b bra p8l_skip8b ; source: test_word_lt.p8:248 lbl8b: fail_word(6) p8l_lbl8b ldy #>6 lda #<6 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:249 skip8b: p8l_skip8b ; source: test_word_lt.p8:251 if x<-21829 ldy p8v_x+1 lda p8v_x cmp #<-$5545 tya sbc #>-$5545 bvs + eor #128 + bmi label_asm_24_afterif ; source: test_word_lt.p8:252 fail_word(7) ldy #>7 lda #<7 jsr p8b_main.p8s_fail_word label_asm_24_afterif ; source: test_word_lt.p8:255 if x<-21829 ldy p8v_x+1 lda p8v_x cmp #<-$5545 tya sbc #>-$5545 bvs + eor #128 + bmi label_asm_26_else ; source: test_word_lt.p8:256 fail_word(8) ldy #>8 lda #<8 jsr p8b_main.p8s_fail_word bra label_asm_25_afterif label_asm_26_else ; source: test_word_lt.p8:258 success++ inc p8b_main.p8v_success label_asm_25_afterif ; source: test_word_lt.p8:261 if x<-1 ldy p8v_x+1 lda p8v_x cmp #<-1 tya sbc #>-1 bvc + eor #128 + bmi p8l_lbl9a ; source: test_word_lt.p8:263 goto skip9a bra p8l_skip9a ; source: test_word_lt.p8:264 lbl9a: fail_word(9) p8l_lbl9a ldy #>9 lda #<9 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:265 skip9a: p8l_skip9a ; source: test_word_lt.p8:267 cx16.r3 = &lbl9b lda #p8l_lbl9b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:268 if x<-1 ldy p8v_x+1 lda p8v_x cmp #<-1 tya sbc #>-1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:270 goto skip9b bra p8l_skip9b ; source: test_word_lt.p8:271 lbl9b: fail_word(10) p8l_lbl9b ldy #>10 lda #<10 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:272 skip9b: p8l_skip9b ; source: test_word_lt.p8:274 if x<-1 ldy p8v_x+1 lda p8v_x cmp #<-1 tya sbc #>-1 bvs + eor #128 + bmi label_asm_27_afterif ; source: test_word_lt.p8:275 fail_word(11) ldy #>11 lda #<11 jsr p8b_main.p8s_fail_word label_asm_27_afterif ; source: test_word_lt.p8:278 if x<-1 ldy p8v_x+1 lda p8v_x cmp #<-1 tya sbc #>-1 bvs + eor #128 + bmi label_asm_29_else ; source: test_word_lt.p8:279 fail_word(12) ldy #>12 lda #<12 jsr p8b_main.p8s_fail_word bra label_asm_28_afterif label_asm_29_else ; source: test_word_lt.p8:281 success++ inc p8b_main.p8v_success label_asm_28_afterif ; source: test_word_lt.p8:284 if x<0 lda p8v_x+1 bmi p8l_lbl10a ; source: test_word_lt.p8:286 goto skip10a bra p8l_skip10a ; source: test_word_lt.p8:287 lbl10a: success++ p8l_lbl10a inc p8b_main.p8v_success ; source: test_word_lt.p8:288 skip10a: p8l_skip10a ; source: test_word_lt.p8:290 cx16.r3 = &lbl10b lda #p8l_lbl10b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:291 if x<0 lda p8v_x+1 bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:293 goto skip10b bra p8l_skip10b ; source: test_word_lt.p8:294 lbl10b: success++ p8l_lbl10b inc p8b_main.p8v_success ; source: test_word_lt.p8:295 skip10b: p8l_skip10b ; source: test_word_lt.p8:297 if x<0 lda p8v_x+1 bpl label_asm_30_afterif ; source: test_word_lt.p8:298 success++ inc p8b_main.p8v_success label_asm_30_afterif ; source: test_word_lt.p8:301 if x<0 lda p8v_x+1 bpl label_asm_32_else ; source: test_word_lt.p8:302 success++ inc p8b_main.p8v_success bra label_asm_31_afterif label_asm_32_else ; source: test_word_lt.p8:304 cx16.r0L++ inc cx16.r0L label_asm_31_afterif ; source: test_word_lt.p8:307 if x<1 lda p8b_main.p8s_test_cmp_number.p8v_x+1 bmi p8l_lbl11a bne + lda p8b_main.p8s_test_cmp_number.p8v_x beq p8l_lbl11a + ; source: test_word_lt.p8:309 goto skip11a bra p8l_skip11a ; source: test_word_lt.p8:310 lbl11a: success++ p8l_lbl11a inc p8b_main.p8v_success ; source: test_word_lt.p8:311 skip11a: p8l_skip11a ; source: test_word_lt.p8:313 cx16.r3 = &lbl11b lda #p8l_lbl11b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:314 if x<1 lda p8b_main.p8s_test_cmp_number.p8v_x+1 bmi + bne ++ lda p8b_main.p8s_test_cmp_number.p8v_x bne ++ + jmp (cx16.r3) + ; source: test_word_lt.p8:316 goto skip11b bra p8l_skip11b ; source: test_word_lt.p8:317 lbl11b: success++ p8l_lbl11b inc p8b_main.p8v_success ; source: test_word_lt.p8:318 skip11b: p8l_skip11b ; source: test_word_lt.p8:320 if x<1 lda p8b_main.p8s_test_cmp_number.p8v_x+1 bmi + bne label_asm_33_afterif lda p8b_main.p8s_test_cmp_number.p8v_x bne label_asm_33_afterif + ; source: test_word_lt.p8:321 success++ inc p8b_main.p8v_success label_asm_33_afterif ; source: test_word_lt.p8:324 if x<1 lda p8b_main.p8s_test_cmp_number.p8v_x+1 bmi + bne label_asm_35_else lda p8b_main.p8s_test_cmp_number.p8v_x bne label_asm_35_else + ; source: test_word_lt.p8:325 success++ inc p8b_main.p8v_success bra label_asm_34_afterif label_asm_35_else ; source: test_word_lt.p8:327 cx16.r0L++ inc cx16.r0L label_asm_34_afterif ; source: test_word_lt.p8:330 if x<170 ldy p8v_x+1 lda p8v_x cmp #<$aa tya sbc #>$aa bvc + eor #128 + bmi p8l_lbl12a ; source: test_word_lt.p8:332 goto skip12a bra p8l_skip12a ; source: test_word_lt.p8:333 lbl12a: success++ p8l_lbl12a inc p8b_main.p8v_success ; source: test_word_lt.p8:334 skip12a: p8l_skip12a ; source: test_word_lt.p8:336 cx16.r3 = &lbl12b lda #p8l_lbl12b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:337 if x<170 ldy p8v_x+1 lda p8v_x cmp #<$aa tya sbc #>$aa bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:339 goto skip12b bra p8l_skip12b ; source: test_word_lt.p8:340 lbl12b: success++ p8l_lbl12b inc p8b_main.p8v_success ; source: test_word_lt.p8:341 skip12b: p8l_skip12b ; source: test_word_lt.p8:343 if x<170 ldy p8v_x+1 lda p8v_x cmp #<$aa tya sbc #>$aa bvs + eor #128 + bmi label_asm_36_afterif ; source: test_word_lt.p8:344 success++ inc p8b_main.p8v_success label_asm_36_afterif ; source: test_word_lt.p8:347 if x<170 ldy p8v_x+1 lda p8v_x cmp #<$aa tya sbc #>$aa bvs + eor #128 + bmi label_asm_38_else ; source: test_word_lt.p8:348 success++ inc p8b_main.p8v_success bra label_asm_37_afterif label_asm_38_else ; source: test_word_lt.p8:350 cx16.r0L++ inc cx16.r0L label_asm_37_afterif ; source: test_word_lt.p8:353 if x<30464 ldy p8v_x+1 lda p8v_x cmp #<$7700 tya sbc #>$7700 bvc + eor #128 + bmi p8l_lbl13a ; source: test_word_lt.p8:355 goto skip13a bra p8l_skip13a ; source: test_word_lt.p8:356 lbl13a: success++ p8l_lbl13a inc p8b_main.p8v_success ; source: test_word_lt.p8:357 skip13a: p8l_skip13a ; source: test_word_lt.p8:359 cx16.r3 = &lbl13b lda #p8l_lbl13b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:360 if x<30464 ldy p8v_x+1 lda p8v_x cmp #<$7700 tya sbc #>$7700 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:362 goto skip13b bra p8l_skip13b ; source: test_word_lt.p8:363 lbl13b: success++ p8l_lbl13b inc p8b_main.p8v_success ; source: test_word_lt.p8:364 skip13b: p8l_skip13b ; source: test_word_lt.p8:366 if x<30464 ldy p8v_x+1 lda p8v_x cmp #<$7700 tya sbc #>$7700 bvs + eor #128 + bmi label_asm_39_afterif ; source: test_word_lt.p8:367 success++ inc p8b_main.p8v_success label_asm_39_afterif ; source: test_word_lt.p8:370 if x<30464 ldy p8v_x+1 lda p8v_x cmp #<$7700 tya sbc #>$7700 bvs + eor #128 + bmi label_asm_41_else ; source: test_word_lt.p8:371 success++ inc p8b_main.p8v_success bra label_asm_40_afterif label_asm_41_else ; source: test_word_lt.p8:373 cx16.r0L++ inc cx16.r0L label_asm_40_afterif ; source: test_word_lt.p8:376 if x<32767 ldy p8v_x+1 lda p8v_x cmp #<$7fff tya sbc #>$7fff bvc + eor #128 + bmi p8l_lbl14a ; source: test_word_lt.p8:378 goto skip14a bra p8l_skip14a ; source: test_word_lt.p8:379 lbl14a: success++ p8l_lbl14a inc p8b_main.p8v_success ; source: test_word_lt.p8:380 skip14a: p8l_skip14a ; source: test_word_lt.p8:382 cx16.r3 = &lbl14b lda #p8l_lbl14b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:383 if x<32767 ldy p8v_x+1 lda p8v_x cmp #<$7fff tya sbc #>$7fff bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:385 goto skip14b bra p8l_skip14b ; source: test_word_lt.p8:386 lbl14b: success++ p8l_lbl14b inc p8b_main.p8v_success ; source: test_word_lt.p8:387 skip14b: p8l_skip14b ; source: test_word_lt.p8:389 if x<32767 ldy p8v_x+1 lda p8v_x cmp #<$7fff tya sbc #>$7fff bvs + eor #128 + bmi label_asm_42_afterif ; source: test_word_lt.p8:390 success++ inc p8b_main.p8v_success label_asm_42_afterif ; source: test_word_lt.p8:393 if x<32767 ldy p8v_x+1 lda p8v_x cmp #<$7fff tya sbc #>$7fff bvs + eor #128 + bmi label_asm_44_else ; source: test_word_lt.p8:394 success++ inc p8b_main.p8v_success bra label_asm_43_afterif label_asm_44_else ; source: test_word_lt.p8:396 cx16.r0L++ inc cx16.r0L label_asm_43_afterif ; source: test_word_lt.p8:398 x=0 stz p8v_x stz p8v_x+1 ; source: test_word_lt.p8:400 if x<-21829 ldy p8v_x+1 lda p8v_x cmp #<-$5545 tya sbc #>-$5545 bvc + eor #128 + bmi p8l_lbl15a ; source: test_word_lt.p8:402 goto skip15a bra p8l_skip15a ; source: test_word_lt.p8:403 lbl15a: fail_word(13) p8l_lbl15a ldy #>13 lda #<13 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:404 skip15a: p8l_skip15a ; source: test_word_lt.p8:406 cx16.r3 = &lbl15b lda #p8l_lbl15b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:407 if x<-21829 ldy p8v_x+1 lda p8v_x cmp #<-$5545 tya sbc #>-$5545 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:409 goto skip15b bra p8l_skip15b ; source: test_word_lt.p8:410 lbl15b: fail_word(14) p8l_lbl15b ldy #>14 lda #<14 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:411 skip15b: p8l_skip15b ; source: test_word_lt.p8:413 if x<-21829 ldy p8v_x+1 lda p8v_x cmp #<-$5545 tya sbc #>-$5545 bvs + eor #128 + bmi label_asm_45_afterif ; source: test_word_lt.p8:414 fail_word(15) ldy #>15 lda #<15 jsr p8b_main.p8s_fail_word label_asm_45_afterif ; source: test_word_lt.p8:417 if x<-21829 ldy p8v_x+1 lda p8v_x cmp #<-$5545 tya sbc #>-$5545 bvs + eor #128 + bmi label_asm_47_else ; source: test_word_lt.p8:418 fail_word(16) ldy #>$10 lda #<$10 jsr p8b_main.p8s_fail_word bra label_asm_46_afterif label_asm_47_else ; source: test_word_lt.p8:420 success++ inc p8b_main.p8v_success label_asm_46_afterif ; source: test_word_lt.p8:423 if x<-1 ldy p8v_x+1 lda p8v_x cmp #<-1 tya sbc #>-1 bvc + eor #128 + bmi p8l_lbl16a ; source: test_word_lt.p8:425 goto skip16a bra p8l_skip16a ; source: test_word_lt.p8:426 lbl16a: fail_word(17) p8l_lbl16a ldy #>$11 lda #<$11 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:427 skip16a: p8l_skip16a ; source: test_word_lt.p8:429 cx16.r3 = &lbl16b lda #p8l_lbl16b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:430 if x<-1 ldy p8v_x+1 lda p8v_x cmp #<-1 tya sbc #>-1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:432 goto skip16b bra p8l_skip16b ; source: test_word_lt.p8:433 lbl16b: fail_word(18) p8l_lbl16b ldy #>$12 lda #<$12 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:434 skip16b: p8l_skip16b ; source: test_word_lt.p8:436 if x<-1 ldy p8v_x+1 lda p8v_x cmp #<-1 tya sbc #>-1 bvs + eor #128 + bmi label_asm_48_afterif ; source: test_word_lt.p8:437 fail_word(19) ldy #>$13 lda #<$13 jsr p8b_main.p8s_fail_word label_asm_48_afterif ; source: test_word_lt.p8:440 if x<-1 ldy p8v_x+1 lda p8v_x cmp #<-1 tya sbc #>-1 bvs + eor #128 + bmi label_asm_50_else ; source: test_word_lt.p8:441 fail_word(20) ldy #>$14 lda #<$14 jsr p8b_main.p8s_fail_word bra label_asm_49_afterif label_asm_50_else ; source: test_word_lt.p8:443 success++ inc p8b_main.p8v_success label_asm_49_afterif ; source: test_word_lt.p8:446 if x<0 lda p8v_x+1 bmi p8l_lbl17a ; source: test_word_lt.p8:448 goto skip17a bra p8l_skip17a ; source: test_word_lt.p8:449 lbl17a: fail_word(21) p8l_lbl17a ldy #>$15 lda #<$15 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:450 skip17a: p8l_skip17a ; source: test_word_lt.p8:452 cx16.r3 = &lbl17b lda #p8l_lbl17b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:453 if x<0 lda p8v_x+1 bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:455 goto skip17b bra p8l_skip17b ; source: test_word_lt.p8:456 lbl17b: fail_word(22) p8l_lbl17b ldy #>$16 lda #<$16 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:457 skip17b: p8l_skip17b ; source: test_word_lt.p8:459 if x<0 lda p8v_x+1 bpl label_asm_51_afterif ; source: test_word_lt.p8:460 fail_word(23) ldy #>$17 lda #<$17 jsr p8b_main.p8s_fail_word label_asm_51_afterif ; source: test_word_lt.p8:463 if x<0 lda p8v_x+1 bpl label_asm_53_else ; source: test_word_lt.p8:464 fail_word(24) ldy #>$18 lda #<$18 jsr p8b_main.p8s_fail_word bra label_asm_52_afterif label_asm_53_else ; source: test_word_lt.p8:466 success++ inc p8b_main.p8v_success label_asm_52_afterif ; source: test_word_lt.p8:469 if x<1 lda p8b_main.p8s_test_cmp_number.p8v_x+1 bmi p8l_lbl18a bne + lda p8b_main.p8s_test_cmp_number.p8v_x beq p8l_lbl18a + ; source: test_word_lt.p8:471 goto skip18a bra p8l_skip18a ; source: test_word_lt.p8:472 lbl18a: success++ p8l_lbl18a inc p8b_main.p8v_success ; source: test_word_lt.p8:473 skip18a: p8l_skip18a ; source: test_word_lt.p8:475 cx16.r3 = &lbl18b lda #p8l_lbl18b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:476 if x<1 lda p8b_main.p8s_test_cmp_number.p8v_x+1 bmi + bne ++ lda p8b_main.p8s_test_cmp_number.p8v_x bne ++ + jmp (cx16.r3) + ; source: test_word_lt.p8:478 goto skip18b bra p8l_skip18b ; source: test_word_lt.p8:479 lbl18b: success++ p8l_lbl18b inc p8b_main.p8v_success ; source: test_word_lt.p8:480 skip18b: p8l_skip18b ; source: test_word_lt.p8:482 if x<1 lda p8b_main.p8s_test_cmp_number.p8v_x+1 bmi + bne label_asm_54_afterif lda p8b_main.p8s_test_cmp_number.p8v_x bne label_asm_54_afterif + ; source: test_word_lt.p8:483 success++ inc p8b_main.p8v_success label_asm_54_afterif ; source: test_word_lt.p8:486 if x<1 lda p8b_main.p8s_test_cmp_number.p8v_x+1 bmi + bne label_asm_56_else lda p8b_main.p8s_test_cmp_number.p8v_x bne label_asm_56_else + ; source: test_word_lt.p8:487 success++ inc p8b_main.p8v_success bra label_asm_55_afterif label_asm_56_else ; source: test_word_lt.p8:489 cx16.r0L++ inc cx16.r0L label_asm_55_afterif ; source: test_word_lt.p8:492 if x<170 ldy p8v_x+1 lda p8v_x cmp #<$aa tya sbc #>$aa bvc + eor #128 + bmi p8l_lbl19a ; source: test_word_lt.p8:494 goto skip19a bra p8l_skip19a ; source: test_word_lt.p8:495 lbl19a: success++ p8l_lbl19a inc p8b_main.p8v_success ; source: test_word_lt.p8:496 skip19a: p8l_skip19a ; source: test_word_lt.p8:498 cx16.r3 = &lbl19b lda #p8l_lbl19b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:499 if x<170 ldy p8v_x+1 lda p8v_x cmp #<$aa tya sbc #>$aa bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:501 goto skip19b bra p8l_skip19b ; source: test_word_lt.p8:502 lbl19b: success++ p8l_lbl19b inc p8b_main.p8v_success ; source: test_word_lt.p8:503 skip19b: p8l_skip19b ; source: test_word_lt.p8:505 if x<170 ldy p8v_x+1 lda p8v_x cmp #<$aa tya sbc #>$aa bvs + eor #128 + bmi label_asm_57_afterif ; source: test_word_lt.p8:506 success++ inc p8b_main.p8v_success label_asm_57_afterif ; source: test_word_lt.p8:509 if x<170 ldy p8v_x+1 lda p8v_x cmp #<$aa tya sbc #>$aa bvs + eor #128 + bmi label_asm_59_else ; source: test_word_lt.p8:510 success++ inc p8b_main.p8v_success bra label_asm_58_afterif label_asm_59_else ; source: test_word_lt.p8:512 cx16.r0L++ inc cx16.r0L label_asm_58_afterif ; source: test_word_lt.p8:515 if x<30464 ldy p8v_x+1 lda p8v_x cmp #<$7700 tya sbc #>$7700 bvc + eor #128 + bmi p8l_lbl20a ; source: test_word_lt.p8:517 goto skip20a bra p8l_skip20a ; source: test_word_lt.p8:518 lbl20a: success++ p8l_lbl20a inc p8b_main.p8v_success ; source: test_word_lt.p8:519 skip20a: p8l_skip20a ; source: test_word_lt.p8:521 cx16.r3 = &lbl20b lda #p8l_lbl20b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:522 if x<30464 ldy p8v_x+1 lda p8v_x cmp #<$7700 tya sbc #>$7700 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:524 goto skip20b bra p8l_skip20b ; source: test_word_lt.p8:525 lbl20b: success++ p8l_lbl20b inc p8b_main.p8v_success ; source: test_word_lt.p8:526 skip20b: p8l_skip20b ; source: test_word_lt.p8:528 if x<30464 ldy p8v_x+1 lda p8v_x cmp #<$7700 tya sbc #>$7700 bvs + eor #128 + bmi label_asm_60_afterif ; source: test_word_lt.p8:529 success++ inc p8b_main.p8v_success label_asm_60_afterif ; source: test_word_lt.p8:532 if x<30464 ldy p8v_x+1 lda p8v_x cmp #<$7700 tya sbc #>$7700 bvs + eor #128 + bmi label_asm_62_else ; source: test_word_lt.p8:533 success++ inc p8b_main.p8v_success bra label_asm_61_afterif label_asm_62_else ; source: test_word_lt.p8:535 cx16.r0L++ inc cx16.r0L label_asm_61_afterif ; source: test_word_lt.p8:538 if x<32767 ldy p8v_x+1 lda p8v_x cmp #<$7fff tya sbc #>$7fff bvc + eor #128 + bmi p8l_lbl21a ; source: test_word_lt.p8:540 goto skip21a bra p8l_skip21a ; source: test_word_lt.p8:541 lbl21a: success++ p8l_lbl21a inc p8b_main.p8v_success ; source: test_word_lt.p8:542 skip21a: p8l_skip21a ; source: test_word_lt.p8:544 cx16.r3 = &lbl21b lda #p8l_lbl21b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:545 if x<32767 ldy p8v_x+1 lda p8v_x cmp #<$7fff tya sbc #>$7fff bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:547 goto skip21b bra p8l_skip21b ; source: test_word_lt.p8:548 lbl21b: success++ p8l_lbl21b inc p8b_main.p8v_success ; source: test_word_lt.p8:549 skip21b: p8l_skip21b ; source: test_word_lt.p8:551 if x<32767 ldy p8v_x+1 lda p8v_x cmp #<$7fff tya sbc #>$7fff bvs + eor #128 + bmi label_asm_63_afterif ; source: test_word_lt.p8:552 success++ inc p8b_main.p8v_success label_asm_63_afterif ; source: test_word_lt.p8:555 if x<32767 ldy p8v_x+1 lda p8v_x cmp #<$7fff tya sbc #>$7fff bvs + eor #128 + bmi label_asm_65_else ; source: test_word_lt.p8:556 success++ inc p8b_main.p8v_success bra label_asm_64_afterif label_asm_65_else ; source: test_word_lt.p8:558 cx16.r0L++ inc cx16.r0L label_asm_64_afterif ; source: test_word_lt.p8:560 x=1 lda #<1 ldy #>1 sta p8v_x sty p8v_x+1 ; source: test_word_lt.p8:562 if x<-21829 cmp #<-$5545 tya sbc #>-$5545 bvc + eor #128 + bmi p8l_lbl22a ; source: test_word_lt.p8:564 goto skip22a bra p8l_skip22a ; source: test_word_lt.p8:565 lbl22a: fail_word(25) p8l_lbl22a ldy #>$19 lda #<$19 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:566 skip22a: p8l_skip22a ; source: test_word_lt.p8:568 cx16.r3 = &lbl22b lda #p8l_lbl22b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:569 if x<-21829 ldy p8v_x+1 lda p8v_x cmp #<-$5545 tya sbc #>-$5545 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:571 goto skip22b bra p8l_skip22b ; source: test_word_lt.p8:572 lbl22b: fail_word(26) p8l_lbl22b ldy #>$1a lda #<$1a jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:573 skip22b: p8l_skip22b ; source: test_word_lt.p8:575 if x<-21829 ldy p8v_x+1 lda p8v_x cmp #<-$5545 tya sbc #>-$5545 bvs + eor #128 + bmi label_asm_66_afterif ; source: test_word_lt.p8:576 fail_word(27) ldy #>$1b lda #<$1b jsr p8b_main.p8s_fail_word label_asm_66_afterif ; source: test_word_lt.p8:579 if x<-21829 ldy p8v_x+1 lda p8v_x cmp #<-$5545 tya sbc #>-$5545 bvs + eor #128 + bmi label_asm_68_else ; source: test_word_lt.p8:580 fail_word(28) ldy #>$1c lda #<$1c jsr p8b_main.p8s_fail_word bra label_asm_67_afterif label_asm_68_else ; source: test_word_lt.p8:582 success++ inc p8b_main.p8v_success label_asm_67_afterif ; source: test_word_lt.p8:585 if x<-1 ldy p8v_x+1 lda p8v_x cmp #<-1 tya sbc #>-1 bvc + eor #128 + bmi p8l_lbl23a ; source: test_word_lt.p8:587 goto skip23a bra p8l_skip23a ; source: test_word_lt.p8:588 lbl23a: fail_word(29) p8l_lbl23a ldy #>$1d lda #<$1d jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:589 skip23a: p8l_skip23a ; source: test_word_lt.p8:591 cx16.r3 = &lbl23b lda #p8l_lbl23b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:592 if x<-1 ldy p8v_x+1 lda p8v_x cmp #<-1 tya sbc #>-1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:594 goto skip23b bra p8l_skip23b ; source: test_word_lt.p8:595 lbl23b: fail_word(30) p8l_lbl23b ldy #>$1e lda #<$1e jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:596 skip23b: p8l_skip23b ; source: test_word_lt.p8:598 if x<-1 ldy p8v_x+1 lda p8v_x cmp #<-1 tya sbc #>-1 bvs + eor #128 + bmi label_asm_69_afterif ; source: test_word_lt.p8:599 fail_word(31) ldy #>$1f lda #<$1f jsr p8b_main.p8s_fail_word label_asm_69_afterif ; source: test_word_lt.p8:602 if x<-1 ldy p8v_x+1 lda p8v_x cmp #<-1 tya sbc #>-1 bvs + eor #128 + bmi label_asm_71_else ; source: test_word_lt.p8:603 fail_word(32) ldy #>$20 lda #<$20 jsr p8b_main.p8s_fail_word bra label_asm_70_afterif label_asm_71_else ; source: test_word_lt.p8:605 success++ inc p8b_main.p8v_success label_asm_70_afterif ; source: test_word_lt.p8:608 if x<0 lda p8v_x+1 bmi p8l_lbl24a ; source: test_word_lt.p8:610 goto skip24a bra p8l_skip24a ; source: test_word_lt.p8:611 lbl24a: fail_word(33) p8l_lbl24a ldy #>$21 lda #<$21 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:612 skip24a: p8l_skip24a ; source: test_word_lt.p8:614 cx16.r3 = &lbl24b lda #p8l_lbl24b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:615 if x<0 lda p8v_x+1 bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:617 goto skip24b bra p8l_skip24b ; source: test_word_lt.p8:618 lbl24b: fail_word(34) p8l_lbl24b ldy #>$22 lda #<$22 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:619 skip24b: p8l_skip24b ; source: test_word_lt.p8:621 if x<0 lda p8v_x+1 bpl label_asm_72_afterif ; source: test_word_lt.p8:622 fail_word(35) ldy #>$23 lda #<$23 jsr p8b_main.p8s_fail_word label_asm_72_afterif ; source: test_word_lt.p8:625 if x<0 lda p8v_x+1 bpl label_asm_74_else ; source: test_word_lt.p8:626 fail_word(36) ldy #>$24 lda #<$24 jsr p8b_main.p8s_fail_word bra label_asm_73_afterif label_asm_74_else ; source: test_word_lt.p8:628 success++ inc p8b_main.p8v_success label_asm_73_afterif ; source: test_word_lt.p8:631 if x<1 lda p8b_main.p8s_test_cmp_number.p8v_x+1 bmi p8l_lbl25a bne + lda p8b_main.p8s_test_cmp_number.p8v_x beq p8l_lbl25a + ; source: test_word_lt.p8:633 goto skip25a bra p8l_skip25a ; source: test_word_lt.p8:634 lbl25a: fail_word(37) p8l_lbl25a ldy #>$25 lda #<$25 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:635 skip25a: p8l_skip25a ; source: test_word_lt.p8:637 cx16.r3 = &lbl25b lda #p8l_lbl25b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:638 if x<1 lda p8b_main.p8s_test_cmp_number.p8v_x+1 bmi + bne ++ lda p8b_main.p8s_test_cmp_number.p8v_x bne ++ + jmp (cx16.r3) + ; source: test_word_lt.p8:640 goto skip25b bra p8l_skip25b ; source: test_word_lt.p8:641 lbl25b: fail_word(38) p8l_lbl25b ldy #>$26 lda #<$26 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:642 skip25b: p8l_skip25b ; source: test_word_lt.p8:644 if x<1 lda p8b_main.p8s_test_cmp_number.p8v_x+1 bmi + bne label_asm_75_afterif lda p8b_main.p8s_test_cmp_number.p8v_x bne label_asm_75_afterif + ; source: test_word_lt.p8:645 fail_word(39) ldy #>$27 lda #<$27 jsr p8b_main.p8s_fail_word label_asm_75_afterif ; source: test_word_lt.p8:648 if x<1 lda p8b_main.p8s_test_cmp_number.p8v_x+1 bmi + bne label_asm_77_else lda p8b_main.p8s_test_cmp_number.p8v_x bne label_asm_77_else + ; source: test_word_lt.p8:649 fail_word(40) ldy #>$28 lda #<$28 jsr p8b_main.p8s_fail_word bra label_asm_76_afterif label_asm_77_else ; source: test_word_lt.p8:651 success++ inc p8b_main.p8v_success label_asm_76_afterif ; source: test_word_lt.p8:654 if x<170 ldy p8v_x+1 lda p8v_x cmp #<$aa tya sbc #>$aa bvc + eor #128 + bmi p8l_lbl26a ; source: test_word_lt.p8:656 goto skip26a bra p8l_skip26a ; source: test_word_lt.p8:657 lbl26a: success++ p8l_lbl26a inc p8b_main.p8v_success ; source: test_word_lt.p8:658 skip26a: p8l_skip26a ; source: test_word_lt.p8:660 cx16.r3 = &lbl26b lda #p8l_lbl26b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:661 if x<170 ldy p8v_x+1 lda p8v_x cmp #<$aa tya sbc #>$aa bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:663 goto skip26b bra p8l_skip26b ; source: test_word_lt.p8:664 lbl26b: success++ p8l_lbl26b inc p8b_main.p8v_success ; source: test_word_lt.p8:665 skip26b: p8l_skip26b ; source: test_word_lt.p8:667 if x<170 ldy p8v_x+1 lda p8v_x cmp #<$aa tya sbc #>$aa bvs + eor #128 + bmi label_asm_78_afterif ; source: test_word_lt.p8:668 success++ inc p8b_main.p8v_success label_asm_78_afterif ; source: test_word_lt.p8:671 if x<170 ldy p8v_x+1 lda p8v_x cmp #<$aa tya sbc #>$aa bvs + eor #128 + bmi label_asm_80_else ; source: test_word_lt.p8:672 success++ inc p8b_main.p8v_success bra label_asm_79_afterif label_asm_80_else ; source: test_word_lt.p8:674 cx16.r0L++ inc cx16.r0L label_asm_79_afterif ; source: test_word_lt.p8:677 if x<30464 ldy p8v_x+1 lda p8v_x cmp #<$7700 tya sbc #>$7700 bvc + eor #128 + bmi p8l_lbl27a ; source: test_word_lt.p8:679 goto skip27a bra p8l_skip27a ; source: test_word_lt.p8:680 lbl27a: success++ p8l_lbl27a inc p8b_main.p8v_success ; source: test_word_lt.p8:681 skip27a: p8l_skip27a ; source: test_word_lt.p8:683 cx16.r3 = &lbl27b lda #p8l_lbl27b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:684 if x<30464 ldy p8v_x+1 lda p8v_x cmp #<$7700 tya sbc #>$7700 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:686 goto skip27b bra p8l_skip27b ; source: test_word_lt.p8:687 lbl27b: success++ p8l_lbl27b inc p8b_main.p8v_success ; source: test_word_lt.p8:688 skip27b: p8l_skip27b ; source: test_word_lt.p8:690 if x<30464 ldy p8v_x+1 lda p8v_x cmp #<$7700 tya sbc #>$7700 bvs + eor #128 + bmi label_asm_81_afterif ; source: test_word_lt.p8:691 success++ inc p8b_main.p8v_success label_asm_81_afterif ; source: test_word_lt.p8:694 if x<30464 ldy p8v_x+1 lda p8v_x cmp #<$7700 tya sbc #>$7700 bvs + eor #128 + bmi label_asm_83_else ; source: test_word_lt.p8:695 success++ inc p8b_main.p8v_success bra label_asm_82_afterif label_asm_83_else ; source: test_word_lt.p8:697 cx16.r0L++ inc cx16.r0L label_asm_82_afterif ; source: test_word_lt.p8:700 if x<32767 ldy p8v_x+1 lda p8v_x cmp #<$7fff tya sbc #>$7fff bvc + eor #128 + bmi p8l_lbl28a ; source: test_word_lt.p8:702 goto skip28a bra p8l_skip28a ; source: test_word_lt.p8:703 lbl28a: success++ p8l_lbl28a inc p8b_main.p8v_success ; source: test_word_lt.p8:704 skip28a: p8l_skip28a ; source: test_word_lt.p8:706 cx16.r3 = &lbl28b lda #p8l_lbl28b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:707 if x<32767 ldy p8v_x+1 lda p8v_x cmp #<$7fff tya sbc #>$7fff bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:709 goto skip28b bra p8l_skip28b ; source: test_word_lt.p8:710 lbl28b: success++ p8l_lbl28b inc p8b_main.p8v_success ; source: test_word_lt.p8:711 skip28b: p8l_skip28b ; source: test_word_lt.p8:713 if x<32767 ldy p8v_x+1 lda p8v_x cmp #<$7fff tya sbc #>$7fff bvs + eor #128 + bmi label_asm_84_afterif ; source: test_word_lt.p8:714 success++ inc p8b_main.p8v_success label_asm_84_afterif ; source: test_word_lt.p8:717 if x<32767 ldy p8v_x+1 lda p8v_x cmp #<$7fff tya sbc #>$7fff bvs + eor #128 + bmi label_asm_86_else ; source: test_word_lt.p8:718 success++ inc p8b_main.p8v_success bra label_asm_85_afterif label_asm_86_else ; source: test_word_lt.p8:720 cx16.r0L++ inc cx16.r0L label_asm_85_afterif ; source: test_word_lt.p8:722 x=170 lda #<$aa ldy #>$aa sta p8v_x sty p8v_x+1 ; source: test_word_lt.p8:724 if x<-21829 cmp #<-$5545 tya sbc #>-$5545 bvc + eor #128 + bmi p8l_lbl29a ; source: test_word_lt.p8:726 goto skip29a bra p8l_skip29a ; source: test_word_lt.p8:727 lbl29a: fail_word(41) p8l_lbl29a ldy #>$29 lda #<$29 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:728 skip29a: p8l_skip29a ; source: test_word_lt.p8:730 cx16.r3 = &lbl29b lda #p8l_lbl29b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:731 if x<-21829 ldy p8v_x+1 lda p8v_x cmp #<-$5545 tya sbc #>-$5545 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:733 goto skip29b bra p8l_skip29b ; source: test_word_lt.p8:734 lbl29b: fail_word(42) p8l_lbl29b ldy #>$2a lda #<$2a jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:735 skip29b: p8l_skip29b ; source: test_word_lt.p8:737 if x<-21829 ldy p8v_x+1 lda p8v_x cmp #<-$5545 tya sbc #>-$5545 bvs + eor #128 + bmi label_asm_87_afterif ; source: test_word_lt.p8:738 fail_word(43) ldy #>$2b lda #<$2b jsr p8b_main.p8s_fail_word label_asm_87_afterif ; source: test_word_lt.p8:741 if x<-21829 ldy p8v_x+1 lda p8v_x cmp #<-$5545 tya sbc #>-$5545 bvs + eor #128 + bmi label_asm_89_else ; source: test_word_lt.p8:742 fail_word(44) ldy #>$2c lda #<$2c jsr p8b_main.p8s_fail_word bra label_asm_88_afterif label_asm_89_else ; source: test_word_lt.p8:744 success++ inc p8b_main.p8v_success label_asm_88_afterif ; source: test_word_lt.p8:747 if x<-1 ldy p8v_x+1 lda p8v_x cmp #<-1 tya sbc #>-1 bvc + eor #128 + bmi p8l_lbl30a ; source: test_word_lt.p8:749 goto skip30a bra p8l_skip30a ; source: test_word_lt.p8:750 lbl30a: fail_word(45) p8l_lbl30a ldy #>$2d lda #<$2d jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:751 skip30a: p8l_skip30a ; source: test_word_lt.p8:753 cx16.r3 = &lbl30b lda #p8l_lbl30b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:754 if x<-1 ldy p8v_x+1 lda p8v_x cmp #<-1 tya sbc #>-1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:756 goto skip30b bra p8l_skip30b ; source: test_word_lt.p8:757 lbl30b: fail_word(46) p8l_lbl30b ldy #>$2e lda #<$2e jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:758 skip30b: p8l_skip30b ; source: test_word_lt.p8:760 if x<-1 ldy p8v_x+1 lda p8v_x cmp #<-1 tya sbc #>-1 bvs + eor #128 + bmi label_asm_90_afterif ; source: test_word_lt.p8:761 fail_word(47) ldy #>$2f lda #<$2f jsr p8b_main.p8s_fail_word label_asm_90_afterif ; source: test_word_lt.p8:764 if x<-1 ldy p8v_x+1 lda p8v_x cmp #<-1 tya sbc #>-1 bvs + eor #128 + bmi label_asm_92_else ; source: test_word_lt.p8:765 fail_word(48) ldy #>$30 lda #<$30 jsr p8b_main.p8s_fail_word bra label_asm_91_afterif label_asm_92_else ; source: test_word_lt.p8:767 success++ inc p8b_main.p8v_success label_asm_91_afterif ; source: test_word_lt.p8:770 if x<0 lda p8v_x+1 bmi p8l_lbl31a ; source: test_word_lt.p8:772 goto skip31a bra p8l_skip31a ; source: test_word_lt.p8:773 lbl31a: fail_word(49) p8l_lbl31a ldy #>$31 lda #<$31 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:774 skip31a: p8l_skip31a ; source: test_word_lt.p8:776 cx16.r3 = &lbl31b lda #p8l_lbl31b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:777 if x<0 lda p8v_x+1 bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:779 goto skip31b bra p8l_skip31b ; source: test_word_lt.p8:780 lbl31b: fail_word(50) p8l_lbl31b ldy #>$32 lda #<$32 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:781 skip31b: p8l_skip31b ; source: test_word_lt.p8:783 if x<0 lda p8v_x+1 bpl label_asm_93_afterif ; source: test_word_lt.p8:784 fail_word(51) ldy #>$33 lda #<$33 jsr p8b_main.p8s_fail_word label_asm_93_afterif ; source: test_word_lt.p8:787 if x<0 lda p8v_x+1 bpl label_asm_95_else ; source: test_word_lt.p8:788 fail_word(52) ldy #>$34 lda #<$34 jsr p8b_main.p8s_fail_word bra label_asm_94_afterif label_asm_95_else ; source: test_word_lt.p8:790 success++ inc p8b_main.p8v_success label_asm_94_afterif ; source: test_word_lt.p8:793 if x<1 lda p8b_main.p8s_test_cmp_number.p8v_x+1 bmi p8l_lbl32a bne + lda p8b_main.p8s_test_cmp_number.p8v_x beq p8l_lbl32a + ; source: test_word_lt.p8:795 goto skip32a bra p8l_skip32a ; source: test_word_lt.p8:796 lbl32a: fail_word(53) p8l_lbl32a ldy #>$35 lda #<$35 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:797 skip32a: p8l_skip32a ; source: test_word_lt.p8:799 cx16.r3 = &lbl32b lda #p8l_lbl32b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:800 if x<1 lda p8b_main.p8s_test_cmp_number.p8v_x+1 bmi + bne ++ lda p8b_main.p8s_test_cmp_number.p8v_x bne ++ + jmp (cx16.r3) + ; source: test_word_lt.p8:802 goto skip32b bra p8l_skip32b ; source: test_word_lt.p8:803 lbl32b: fail_word(54) p8l_lbl32b ldy #>$36 lda #<$36 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:804 skip32b: p8l_skip32b ; source: test_word_lt.p8:806 if x<1 lda p8b_main.p8s_test_cmp_number.p8v_x+1 bmi + bne label_asm_96_afterif lda p8b_main.p8s_test_cmp_number.p8v_x bne label_asm_96_afterif + ; source: test_word_lt.p8:807 fail_word(55) ldy #>$37 lda #<$37 jsr p8b_main.p8s_fail_word label_asm_96_afterif ; source: test_word_lt.p8:810 if x<1 lda p8b_main.p8s_test_cmp_number.p8v_x+1 bmi + bne label_asm_98_else lda p8b_main.p8s_test_cmp_number.p8v_x bne label_asm_98_else + ; source: test_word_lt.p8:811 fail_word(56) ldy #>$38 lda #<$38 jsr p8b_main.p8s_fail_word bra label_asm_97_afterif label_asm_98_else ; source: test_word_lt.p8:813 success++ inc p8b_main.p8v_success label_asm_97_afterif ; source: test_word_lt.p8:816 if x<170 ldy p8v_x+1 lda p8v_x cmp #<$aa tya sbc #>$aa bvc + eor #128 + bmi p8l_lbl33a ; source: test_word_lt.p8:818 goto skip33a bra p8l_skip33a ; source: test_word_lt.p8:819 lbl33a: fail_word(57) p8l_lbl33a ldy #>$39 lda #<$39 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:820 skip33a: p8l_skip33a ; source: test_word_lt.p8:822 cx16.r3 = &lbl33b lda #p8l_lbl33b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:823 if x<170 ldy p8v_x+1 lda p8v_x cmp #<$aa tya sbc #>$aa bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:825 goto skip33b bra p8l_skip33b ; source: test_word_lt.p8:826 lbl33b: fail_word(58) p8l_lbl33b ldy #>$3a lda #<$3a jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:827 skip33b: p8l_skip33b ; source: test_word_lt.p8:829 if x<170 ldy p8v_x+1 lda p8v_x cmp #<$aa tya sbc #>$aa bvs + eor #128 + bmi label_asm_99_afterif ; source: test_word_lt.p8:830 fail_word(59) ldy #>$3b lda #<$3b jsr p8b_main.p8s_fail_word label_asm_99_afterif ; source: test_word_lt.p8:833 if x<170 ldy p8v_x+1 lda p8v_x cmp #<$aa tya sbc #>$aa bvs + eor #128 + bmi label_asm_101_else ; source: test_word_lt.p8:834 fail_word(60) ldy #>$3c lda #<$3c jsr p8b_main.p8s_fail_word bra label_asm_100_afterif label_asm_101_else ; source: test_word_lt.p8:836 success++ inc p8b_main.p8v_success label_asm_100_afterif ; source: test_word_lt.p8:839 if x<30464 ldy p8v_x+1 lda p8v_x cmp #<$7700 tya sbc #>$7700 bvc + eor #128 + bmi p8l_lbl34a ; source: test_word_lt.p8:841 goto skip34a bra p8l_skip34a ; source: test_word_lt.p8:842 lbl34a: success++ p8l_lbl34a inc p8b_main.p8v_success ; source: test_word_lt.p8:843 skip34a: p8l_skip34a ; source: test_word_lt.p8:845 cx16.r3 = &lbl34b lda #p8l_lbl34b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:846 if x<30464 ldy p8v_x+1 lda p8v_x cmp #<$7700 tya sbc #>$7700 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:848 goto skip34b bra p8l_skip34b ; source: test_word_lt.p8:849 lbl34b: success++ p8l_lbl34b inc p8b_main.p8v_success ; source: test_word_lt.p8:850 skip34b: p8l_skip34b ; source: test_word_lt.p8:852 if x<30464 ldy p8v_x+1 lda p8v_x cmp #<$7700 tya sbc #>$7700 bvs + eor #128 + bmi label_asm_102_afterif ; source: test_word_lt.p8:853 success++ inc p8b_main.p8v_success label_asm_102_afterif ; source: test_word_lt.p8:856 if x<30464 ldy p8v_x+1 lda p8v_x cmp #<$7700 tya sbc #>$7700 bvs + eor #128 + bmi label_asm_104_else ; source: test_word_lt.p8:857 success++ inc p8b_main.p8v_success bra label_asm_103_afterif label_asm_104_else ; source: test_word_lt.p8:859 cx16.r0L++ inc cx16.r0L label_asm_103_afterif ; source: test_word_lt.p8:862 if x<32767 ldy p8v_x+1 lda p8v_x cmp #<$7fff tya sbc #>$7fff bvc + eor #128 + bmi p8l_lbl35a ; source: test_word_lt.p8:864 goto skip35a bra p8l_skip35a ; source: test_word_lt.p8:865 lbl35a: success++ p8l_lbl35a inc p8b_main.p8v_success ; source: test_word_lt.p8:866 skip35a: p8l_skip35a ; source: test_word_lt.p8:868 cx16.r3 = &lbl35b lda #p8l_lbl35b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:869 if x<32767 ldy p8v_x+1 lda p8v_x cmp #<$7fff tya sbc #>$7fff bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:871 goto skip35b bra p8l_skip35b ; source: test_word_lt.p8:872 lbl35b: success++ p8l_lbl35b inc p8b_main.p8v_success ; source: test_word_lt.p8:873 skip35b: p8l_skip35b ; source: test_word_lt.p8:875 if x<32767 ldy p8v_x+1 lda p8v_x cmp #<$7fff tya sbc #>$7fff bvs + eor #128 + bmi label_asm_105_afterif ; source: test_word_lt.p8:876 success++ inc p8b_main.p8v_success label_asm_105_afterif ; source: test_word_lt.p8:879 if x<32767 ldy p8v_x+1 lda p8v_x cmp #<$7fff tya sbc #>$7fff bvs + eor #128 + bmi label_asm_107_else ; source: test_word_lt.p8:880 success++ inc p8b_main.p8v_success bra label_asm_106_afterif label_asm_107_else ; source: test_word_lt.p8:882 cx16.r0L++ inc cx16.r0L label_asm_106_afterif ; source: test_word_lt.p8:884 x=30464 lda #<$7700 ldy #>$7700 sta p8v_x sty p8v_x+1 ; source: test_word_lt.p8:886 if x<-21829 cmp #<-$5545 tya sbc #>-$5545 bvc + eor #128 + bmi p8l_lbl36a ; source: test_word_lt.p8:888 goto skip36a bra p8l_skip36a ; source: test_word_lt.p8:889 lbl36a: fail_word(61) p8l_lbl36a ldy #>$3d lda #<$3d jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:890 skip36a: p8l_skip36a ; source: test_word_lt.p8:892 cx16.r3 = &lbl36b lda #p8l_lbl36b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:893 if x<-21829 ldy p8v_x+1 lda p8v_x cmp #<-$5545 tya sbc #>-$5545 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:895 goto skip36b bra p8l_skip36b ; source: test_word_lt.p8:896 lbl36b: fail_word(62) p8l_lbl36b ldy #>$3e lda #<$3e jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:897 skip36b: p8l_skip36b ; source: test_word_lt.p8:899 if x<-21829 ldy p8v_x+1 lda p8v_x cmp #<-$5545 tya sbc #>-$5545 bvs + eor #128 + bmi label_asm_108_afterif ; source: test_word_lt.p8:900 fail_word(63) ldy #>$3f lda #<$3f jsr p8b_main.p8s_fail_word label_asm_108_afterif ; source: test_word_lt.p8:903 if x<-21829 ldy p8v_x+1 lda p8v_x cmp #<-$5545 tya sbc #>-$5545 bvs + eor #128 + bmi label_asm_110_else ; source: test_word_lt.p8:904 fail_word(64) ldy #>$40 lda #<$40 jsr p8b_main.p8s_fail_word bra label_asm_109_afterif label_asm_110_else ; source: test_word_lt.p8:906 success++ inc p8b_main.p8v_success label_asm_109_afterif ; source: test_word_lt.p8:909 if x<-1 ldy p8v_x+1 lda p8v_x cmp #<-1 tya sbc #>-1 bvc + eor #128 + bmi p8l_lbl37a ; source: test_word_lt.p8:911 goto skip37a bra p8l_skip37a ; source: test_word_lt.p8:912 lbl37a: fail_word(65) p8l_lbl37a ldy #>$41 lda #<$41 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:913 skip37a: p8l_skip37a ; source: test_word_lt.p8:915 cx16.r3 = &lbl37b lda #p8l_lbl37b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:916 if x<-1 ldy p8v_x+1 lda p8v_x cmp #<-1 tya sbc #>-1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:918 goto skip37b bra p8l_skip37b ; source: test_word_lt.p8:919 lbl37b: fail_word(66) p8l_lbl37b ldy #>$42 lda #<$42 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:920 skip37b: p8l_skip37b ; source: test_word_lt.p8:922 if x<-1 ldy p8v_x+1 lda p8v_x cmp #<-1 tya sbc #>-1 bvs + eor #128 + bmi label_asm_111_afterif ; source: test_word_lt.p8:923 fail_word(67) ldy #>$43 lda #<$43 jsr p8b_main.p8s_fail_word label_asm_111_afterif ; source: test_word_lt.p8:926 if x<-1 ldy p8v_x+1 lda p8v_x cmp #<-1 tya sbc #>-1 bvs + eor #128 + bmi label_asm_113_else ; source: test_word_lt.p8:927 fail_word(68) ldy #>$44 lda #<$44 jsr p8b_main.p8s_fail_word bra label_asm_112_afterif label_asm_113_else ; source: test_word_lt.p8:929 success++ inc p8b_main.p8v_success label_asm_112_afterif ; source: test_word_lt.p8:932 if x<0 lda p8v_x+1 bmi p8l_lbl38a ; source: test_word_lt.p8:934 goto skip38a bra p8l_skip38a ; source: test_word_lt.p8:935 lbl38a: fail_word(69) p8l_lbl38a ldy #>$45 lda #<$45 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:936 skip38a: p8l_skip38a ; source: test_word_lt.p8:938 cx16.r3 = &lbl38b lda #p8l_lbl38b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:939 if x<0 lda p8v_x+1 bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:941 goto skip38b bra p8l_skip38b ; source: test_word_lt.p8:942 lbl38b: fail_word(70) p8l_lbl38b ldy #>$46 lda #<$46 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:943 skip38b: p8l_skip38b ; source: test_word_lt.p8:945 if x<0 lda p8v_x+1 bpl label_asm_114_afterif ; source: test_word_lt.p8:946 fail_word(71) ldy #>$47 lda #<$47 jsr p8b_main.p8s_fail_word label_asm_114_afterif ; source: test_word_lt.p8:949 if x<0 lda p8v_x+1 bpl label_asm_116_else ; source: test_word_lt.p8:950 fail_word(72) ldy #>$48 lda #<$48 jsr p8b_main.p8s_fail_word bra label_asm_115_afterif label_asm_116_else ; source: test_word_lt.p8:952 success++ inc p8b_main.p8v_success label_asm_115_afterif ; source: test_word_lt.p8:955 if x<1 lda p8b_main.p8s_test_cmp_number.p8v_x+1 bmi p8l_lbl39a bne + lda p8b_main.p8s_test_cmp_number.p8v_x beq p8l_lbl39a + ; source: test_word_lt.p8:957 goto skip39a bra p8l_skip39a ; source: test_word_lt.p8:958 lbl39a: fail_word(73) p8l_lbl39a ldy #>$49 lda #<$49 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:959 skip39a: p8l_skip39a ; source: test_word_lt.p8:961 cx16.r3 = &lbl39b lda #p8l_lbl39b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:962 if x<1 lda p8b_main.p8s_test_cmp_number.p8v_x+1 bmi + bne ++ lda p8b_main.p8s_test_cmp_number.p8v_x bne ++ + jmp (cx16.r3) + ; source: test_word_lt.p8:964 goto skip39b bra p8l_skip39b ; source: test_word_lt.p8:965 lbl39b: fail_word(74) p8l_lbl39b ldy #>$4a lda #<$4a jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:966 skip39b: p8l_skip39b ; source: test_word_lt.p8:968 if x<1 lda p8b_main.p8s_test_cmp_number.p8v_x+1 bmi + bne label_asm_117_afterif lda p8b_main.p8s_test_cmp_number.p8v_x bne label_asm_117_afterif + ; source: test_word_lt.p8:969 fail_word(75) ldy #>$4b lda #<$4b jsr p8b_main.p8s_fail_word label_asm_117_afterif ; source: test_word_lt.p8:972 if x<1 lda p8b_main.p8s_test_cmp_number.p8v_x+1 bmi + bne label_asm_119_else lda p8b_main.p8s_test_cmp_number.p8v_x bne label_asm_119_else + ; source: test_word_lt.p8:973 fail_word(76) ldy #>$4c lda #<$4c jsr p8b_main.p8s_fail_word bra label_asm_118_afterif label_asm_119_else ; source: test_word_lt.p8:975 success++ inc p8b_main.p8v_success label_asm_118_afterif ; source: test_word_lt.p8:978 if x<170 ldy p8v_x+1 lda p8v_x cmp #<$aa tya sbc #>$aa bvc + eor #128 + bmi p8l_lbl40a ; source: test_word_lt.p8:980 goto skip40a bra p8l_skip40a ; source: test_word_lt.p8:981 lbl40a: fail_word(77) p8l_lbl40a ldy #>$4d lda #<$4d jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:982 skip40a: p8l_skip40a ; source: test_word_lt.p8:984 cx16.r3 = &lbl40b lda #p8l_lbl40b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:985 if x<170 ldy p8v_x+1 lda p8v_x cmp #<$aa tya sbc #>$aa bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:987 goto skip40b bra p8l_skip40b ; source: test_word_lt.p8:988 lbl40b: fail_word(78) p8l_lbl40b ldy #>$4e lda #<$4e jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:989 skip40b: p8l_skip40b ; source: test_word_lt.p8:991 if x<170 ldy p8v_x+1 lda p8v_x cmp #<$aa tya sbc #>$aa bvs + eor #128 + bmi label_asm_120_afterif ; source: test_word_lt.p8:992 fail_word(79) ldy #>$4f lda #<$4f jsr p8b_main.p8s_fail_word label_asm_120_afterif ; source: test_word_lt.p8:995 if x<170 ldy p8v_x+1 lda p8v_x cmp #<$aa tya sbc #>$aa bvs + eor #128 + bmi label_asm_122_else ; source: test_word_lt.p8:996 fail_word(80) ldy #>$50 lda #<$50 jsr p8b_main.p8s_fail_word bra label_asm_121_afterif label_asm_122_else ; source: test_word_lt.p8:998 success++ inc p8b_main.p8v_success label_asm_121_afterif ; source: test_word_lt.p8:1001 if x<30464 ldy p8v_x+1 lda p8v_x cmp #<$7700 tya sbc #>$7700 bvc + eor #128 + bmi p8l_lbl41a ; source: test_word_lt.p8:1003 goto skip41a bra p8l_skip41a ; source: test_word_lt.p8:1004 lbl41a: fail_word(81) p8l_lbl41a ldy #>$51 lda #<$51 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1005 skip41a: p8l_skip41a ; source: test_word_lt.p8:1007 cx16.r3 = &lbl41b lda #p8l_lbl41b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:1008 if x<30464 ldy p8v_x+1 lda p8v_x cmp #<$7700 tya sbc #>$7700 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:1010 goto skip41b bra p8l_skip41b ; source: test_word_lt.p8:1011 lbl41b: fail_word(82) p8l_lbl41b ldy #>$52 lda #<$52 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1012 skip41b: p8l_skip41b ; source: test_word_lt.p8:1014 if x<30464 ldy p8v_x+1 lda p8v_x cmp #<$7700 tya sbc #>$7700 bvs + eor #128 + bmi label_asm_123_afterif ; source: test_word_lt.p8:1015 fail_word(83) ldy #>$53 lda #<$53 jsr p8b_main.p8s_fail_word label_asm_123_afterif ; source: test_word_lt.p8:1018 if x<30464 ldy p8v_x+1 lda p8v_x cmp #<$7700 tya sbc #>$7700 bvs + eor #128 + bmi label_asm_125_else ; source: test_word_lt.p8:1019 fail_word(84) ldy #>$54 lda #<$54 jsr p8b_main.p8s_fail_word bra label_asm_124_afterif label_asm_125_else ; source: test_word_lt.p8:1021 success++ inc p8b_main.p8v_success label_asm_124_afterif ; source: test_word_lt.p8:1024 if x<32767 ldy p8v_x+1 lda p8v_x cmp #<$7fff tya sbc #>$7fff bvc + eor #128 + bmi p8l_lbl42a ; source: test_word_lt.p8:1026 goto skip42a bra p8l_skip42a ; source: test_word_lt.p8:1027 lbl42a: success++ p8l_lbl42a inc p8b_main.p8v_success ; source: test_word_lt.p8:1028 skip42a: p8l_skip42a ; source: test_word_lt.p8:1030 cx16.r3 = &lbl42b lda #p8l_lbl42b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:1031 if x<32767 ldy p8v_x+1 lda p8v_x cmp #<$7fff tya sbc #>$7fff bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:1033 goto skip42b bra p8l_skip42b ; source: test_word_lt.p8:1034 lbl42b: success++ p8l_lbl42b inc p8b_main.p8v_success ; source: test_word_lt.p8:1035 skip42b: p8l_skip42b ; source: test_word_lt.p8:1037 if x<32767 ldy p8v_x+1 lda p8v_x cmp #<$7fff tya sbc #>$7fff bvs + eor #128 + bmi label_asm_126_afterif ; source: test_word_lt.p8:1038 success++ inc p8b_main.p8v_success label_asm_126_afterif ; source: test_word_lt.p8:1041 if x<32767 ldy p8v_x+1 lda p8v_x cmp #<$7fff tya sbc #>$7fff bvs + eor #128 + bmi label_asm_128_else ; source: test_word_lt.p8:1042 success++ inc p8b_main.p8v_success bra label_asm_127_afterif label_asm_128_else ; source: test_word_lt.p8:1044 cx16.r0L++ inc cx16.r0L label_asm_127_afterif ; source: test_word_lt.p8:1046 x=32767 lda #<$7fff ldy #>$7fff sta p8v_x sty p8v_x+1 ; source: test_word_lt.p8:1048 if x<-21829 cmp #<-$5545 tya sbc #>-$5545 bvc + eor #128 + bmi p8l_lbl43a ; source: test_word_lt.p8:1050 goto skip43a bra p8l_skip43a ; source: test_word_lt.p8:1051 lbl43a: fail_word(85) p8l_lbl43a ldy #>$55 lda #<$55 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1052 skip43a: p8l_skip43a ; source: test_word_lt.p8:1054 cx16.r3 = &lbl43b lda #p8l_lbl43b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:1055 if x<-21829 ldy p8v_x+1 lda p8v_x cmp #<-$5545 tya sbc #>-$5545 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:1057 goto skip43b bra p8l_skip43b ; source: test_word_lt.p8:1058 lbl43b: fail_word(86) p8l_lbl43b ldy #>$56 lda #<$56 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1059 skip43b: p8l_skip43b ; source: test_word_lt.p8:1061 if x<-21829 ldy p8v_x+1 lda p8v_x cmp #<-$5545 tya sbc #>-$5545 bvs + eor #128 + bmi label_asm_129_afterif ; source: test_word_lt.p8:1062 fail_word(87) ldy #>$57 lda #<$57 jsr p8b_main.p8s_fail_word label_asm_129_afterif ; source: test_word_lt.p8:1065 if x<-21829 ldy p8v_x+1 lda p8v_x cmp #<-$5545 tya sbc #>-$5545 bvs + eor #128 + bmi label_asm_131_else ; source: test_word_lt.p8:1066 fail_word(88) ldy #>$58 lda #<$58 jsr p8b_main.p8s_fail_word bra label_asm_130_afterif label_asm_131_else ; source: test_word_lt.p8:1068 success++ inc p8b_main.p8v_success label_asm_130_afterif ; source: test_word_lt.p8:1071 if x<-1 ldy p8v_x+1 lda p8v_x cmp #<-1 tya sbc #>-1 bvc + eor #128 + bmi p8l_lbl44a ; source: test_word_lt.p8:1073 goto skip44a bra p8l_skip44a ; source: test_word_lt.p8:1074 lbl44a: fail_word(89) p8l_lbl44a ldy #>$59 lda #<$59 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1075 skip44a: p8l_skip44a ; source: test_word_lt.p8:1077 cx16.r3 = &lbl44b lda #p8l_lbl44b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:1078 if x<-1 ldy p8v_x+1 lda p8v_x cmp #<-1 tya sbc #>-1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:1080 goto skip44b bra p8l_skip44b ; source: test_word_lt.p8:1081 lbl44b: fail_word(90) p8l_lbl44b ldy #>$5a lda #<$5a jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1082 skip44b: p8l_skip44b ; source: test_word_lt.p8:1084 if x<-1 ldy p8v_x+1 lda p8v_x cmp #<-1 tya sbc #>-1 bvs + eor #128 + bmi label_asm_132_afterif ; source: test_word_lt.p8:1085 fail_word(91) ldy #>$5b lda #<$5b jsr p8b_main.p8s_fail_word label_asm_132_afterif ; source: test_word_lt.p8:1088 if x<-1 ldy p8v_x+1 lda p8v_x cmp #<-1 tya sbc #>-1 bvs + eor #128 + bmi label_asm_134_else ; source: test_word_lt.p8:1089 fail_word(92) ldy #>$5c lda #<$5c jsr p8b_main.p8s_fail_word bra label_asm_133_afterif label_asm_134_else ; source: test_word_lt.p8:1091 success++ inc p8b_main.p8v_success label_asm_133_afterif ; source: test_word_lt.p8:1094 if x<0 lda p8v_x+1 bmi p8l_lbl45a ; source: test_word_lt.p8:1096 goto skip45a bra p8l_skip45a ; source: test_word_lt.p8:1097 lbl45a: fail_word(93) p8l_lbl45a ldy #>$5d lda #<$5d jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1098 skip45a: p8l_skip45a ; source: test_word_lt.p8:1100 cx16.r3 = &lbl45b lda #p8l_lbl45b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:1101 if x<0 lda p8v_x+1 bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:1103 goto skip45b bra p8l_skip45b ; source: test_word_lt.p8:1104 lbl45b: fail_word(94) p8l_lbl45b ldy #>$5e lda #<$5e jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1105 skip45b: p8l_skip45b ; source: test_word_lt.p8:1107 if x<0 lda p8v_x+1 bpl label_asm_135_afterif ; source: test_word_lt.p8:1108 fail_word(95) ldy #>$5f lda #<$5f jsr p8b_main.p8s_fail_word label_asm_135_afterif ; source: test_word_lt.p8:1111 if x<0 lda p8v_x+1 bpl label_asm_137_else ; source: test_word_lt.p8:1112 fail_word(96) ldy #>$60 lda #<$60 jsr p8b_main.p8s_fail_word bra label_asm_136_afterif label_asm_137_else ; source: test_word_lt.p8:1114 success++ inc p8b_main.p8v_success label_asm_136_afterif ; source: test_word_lt.p8:1117 if x<1 lda p8b_main.p8s_test_cmp_number.p8v_x+1 bmi p8l_lbl46a bne + lda p8b_main.p8s_test_cmp_number.p8v_x beq p8l_lbl46a + ; source: test_word_lt.p8:1119 goto skip46a bra p8l_skip46a ; source: test_word_lt.p8:1120 lbl46a: fail_word(97) p8l_lbl46a ldy #>$61 lda #<$61 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1121 skip46a: p8l_skip46a ; source: test_word_lt.p8:1123 cx16.r3 = &lbl46b lda #p8l_lbl46b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:1124 if x<1 lda p8b_main.p8s_test_cmp_number.p8v_x+1 bmi + bne ++ lda p8b_main.p8s_test_cmp_number.p8v_x bne ++ + jmp (cx16.r3) + ; source: test_word_lt.p8:1126 goto skip46b bra p8l_skip46b ; source: test_word_lt.p8:1127 lbl46b: fail_word(98) p8l_lbl46b ldy #>$62 lda #<$62 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1128 skip46b: p8l_skip46b ; source: test_word_lt.p8:1130 if x<1 lda p8b_main.p8s_test_cmp_number.p8v_x+1 bmi + bne label_asm_138_afterif lda p8b_main.p8s_test_cmp_number.p8v_x bne label_asm_138_afterif + ; source: test_word_lt.p8:1131 fail_word(99) ldy #>$63 lda #<$63 jsr p8b_main.p8s_fail_word label_asm_138_afterif ; source: test_word_lt.p8:1134 if x<1 lda p8b_main.p8s_test_cmp_number.p8v_x+1 bmi + bne label_asm_140_else lda p8b_main.p8s_test_cmp_number.p8v_x bne label_asm_140_else + ; source: test_word_lt.p8:1135 fail_word(100) ldy #>$64 lda #<$64 jsr p8b_main.p8s_fail_word bra label_asm_139_afterif label_asm_140_else ; source: test_word_lt.p8:1137 success++ inc p8b_main.p8v_success label_asm_139_afterif ; source: test_word_lt.p8:1140 if x<170 ldy p8v_x+1 lda p8v_x cmp #<$aa tya sbc #>$aa bvc + eor #128 + bmi p8l_lbl47a ; source: test_word_lt.p8:1142 goto skip47a bra p8l_skip47a ; source: test_word_lt.p8:1143 lbl47a: fail_word(101) p8l_lbl47a ldy #>$65 lda #<$65 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1144 skip47a: p8l_skip47a ; source: test_word_lt.p8:1146 cx16.r3 = &lbl47b lda #p8l_lbl47b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:1147 if x<170 ldy p8v_x+1 lda p8v_x cmp #<$aa tya sbc #>$aa bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:1149 goto skip47b bra p8l_skip47b ; source: test_word_lt.p8:1150 lbl47b: fail_word(102) p8l_lbl47b ldy #>$66 lda #<$66 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1151 skip47b: p8l_skip47b ; source: test_word_lt.p8:1153 if x<170 ldy p8v_x+1 lda p8v_x cmp #<$aa tya sbc #>$aa bvs + eor #128 + bmi label_asm_141_afterif ; source: test_word_lt.p8:1154 fail_word(103) ldy #>$67 lda #<$67 jsr p8b_main.p8s_fail_word label_asm_141_afterif ; source: test_word_lt.p8:1157 if x<170 ldy p8v_x+1 lda p8v_x cmp #<$aa tya sbc #>$aa bvs + eor #128 + bmi label_asm_143_else ; source: test_word_lt.p8:1158 fail_word(104) ldy #>$68 lda #<$68 jsr p8b_main.p8s_fail_word bra label_asm_142_afterif label_asm_143_else ; source: test_word_lt.p8:1160 success++ inc p8b_main.p8v_success label_asm_142_afterif ; source: test_word_lt.p8:1163 if x<30464 ldy p8v_x+1 lda p8v_x cmp #<$7700 tya sbc #>$7700 bvc + eor #128 + bmi p8l_lbl48a ; source: test_word_lt.p8:1165 goto skip48a bra p8l_skip48a ; source: test_word_lt.p8:1166 lbl48a: fail_word(105) p8l_lbl48a ldy #>$69 lda #<$69 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1167 skip48a: p8l_skip48a ; source: test_word_lt.p8:1169 cx16.r3 = &lbl48b lda #p8l_lbl48b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:1170 if x<30464 ldy p8v_x+1 lda p8v_x cmp #<$7700 tya sbc #>$7700 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:1172 goto skip48b bra p8l_skip48b ; source: test_word_lt.p8:1173 lbl48b: fail_word(106) p8l_lbl48b ldy #>$6a lda #<$6a jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1174 skip48b: p8l_skip48b ; source: test_word_lt.p8:1176 if x<30464 ldy p8v_x+1 lda p8v_x cmp #<$7700 tya sbc #>$7700 bvs + eor #128 + bmi label_asm_144_afterif ; source: test_word_lt.p8:1177 fail_word(107) ldy #>$6b lda #<$6b jsr p8b_main.p8s_fail_word label_asm_144_afterif ; source: test_word_lt.p8:1180 if x<30464 ldy p8v_x+1 lda p8v_x cmp #<$7700 tya sbc #>$7700 bvs + eor #128 + bmi label_asm_146_else ; source: test_word_lt.p8:1181 fail_word(108) ldy #>$6c lda #<$6c jsr p8b_main.p8s_fail_word bra label_asm_145_afterif label_asm_146_else ; source: test_word_lt.p8:1183 success++ inc p8b_main.p8v_success label_asm_145_afterif ; source: test_word_lt.p8:1186 if x<32767 ldy p8v_x+1 lda p8v_x cmp #<$7fff tya sbc #>$7fff bvc + eor #128 + bmi p8l_lbl49a ; source: test_word_lt.p8:1188 goto skip49a bra p8l_skip49a ; source: test_word_lt.p8:1189 lbl49a: fail_word(109) p8l_lbl49a ldy #>$6d lda #<$6d jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1190 skip49a: p8l_skip49a ; source: test_word_lt.p8:1192 cx16.r3 = &lbl49b lda #p8l_lbl49b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:1193 if x<32767 ldy p8v_x+1 lda p8v_x cmp #<$7fff tya sbc #>$7fff bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:1195 goto skip49b bra p8l_skip49b ; source: test_word_lt.p8:1196 lbl49b: fail_word(110) p8l_lbl49b ldy #>$6e lda #<$6e jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1197 skip49b: p8l_skip49b ; source: test_word_lt.p8:1199 if x<32767 ldy p8v_x+1 lda p8v_x cmp #<$7fff tya sbc #>$7fff bvs + eor #128 + bmi label_asm_147_afterif ; source: test_word_lt.p8:1200 fail_word(111) ldy #>$6f lda #<$6f jsr p8b_main.p8s_fail_word label_asm_147_afterif ; source: test_word_lt.p8:1203 if x<32767 ldy p8v_x+1 lda p8v_x cmp #<$7fff tya sbc #>$7fff bvs + eor #128 + bmi label_asm_149_else ; source: test_word_lt.p8:1204 fail_word(112) ldy #>$70 lda #<$70 jsr p8b_main.p8s_fail_word bra label_asm_148_afterif label_asm_149_else ; source: test_word_lt.p8:1206 success++ inc p8b_main.p8v_success label_asm_148_afterif ; source: test_word_lt.p8:1208 verify_success(112) lda #$70 jmp p8b_main.p8s_verify_success ; source: test_word_lt.p8:71 sub test_cmp_number() { ; variables .section BSS .send BSS ; non-zeropage variables without initialization value .section BSS p8v_x .sint ? .send BSS .pend ; source: test_word_lt.p8:1210 sub test_cmp_var() { p8s_test_cmp_var .proc ; statements ; source: test_word_lt.p8:1211 word @shared x, value stz p8v_x stz p8v_x+1 lda p8v_x ldy p8v_x+1 sta p8v_value sty p8v_value+1 ; source: test_word_lt.p8:1212 success = 0 stz p8b_main.p8v_success ; source: test_word_lt.p8:1213 x=-21829 lda #<-$5545 ldy #>-$5545 sta p8v_x sty p8v_x+1 ; source: test_word_lt.p8:1214 value=-21829 sta p8v_value sty p8v_value+1 ; source: test_word_lt.p8:1216 if x$71 lda #<$71 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1220 skip1a: p8l_skip1a ; source: test_word_lt.p8:1222 cx16.r3 = &lbl1b lda #p8l_lbl1b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:1223 if x$72 lda #<$72 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1227 skip1b: p8l_skip1b ; source: test_word_lt.p8:1229 if x$73 lda #<$73 jsr p8b_main.p8s_fail_word label_asm_150_afterif ; source: test_word_lt.p8:1233 if x$74 lda #<$74 jsr p8b_main.p8s_fail_word bra label_asm_151_afterif label_asm_152_else ; source: test_word_lt.p8:1236 success++ inc p8b_main.p8v_success label_asm_151_afterif ; source: test_word_lt.p8:1238 value=-1 lda #<-1 ldy #>-1 sta p8v_value sty p8v_value+1 ; source: test_word_lt.p8:1240 if xp8l_lbl2b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:1247 if xp8l_lbl3b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:1271 if x1 sta p8v_value sty p8v_value+1 ; source: test_word_lt.p8:1288 if xp8l_lbl4b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:1295 if x$aa sta p8v_value sty p8v_value+1 ; source: test_word_lt.p8:1312 if xp8l_lbl5b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:1319 if x$7700 sta p8v_value sty p8v_value+1 ; source: test_word_lt.p8:1336 if xp8l_lbl6b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:1343 if x$7fff sta p8v_value sty p8v_value+1 ; source: test_word_lt.p8:1360 if xp8l_lbl7b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:1367 if x-1 sta p8v_x sty p8v_x+1 ; source: test_word_lt.p8:1383 value=-21829 lda #<-$5545 ldy #>-$5545 sta p8v_value sty p8v_value+1 ; source: test_word_lt.p8:1385 if x$75 lda #<$75 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1389 skip8a: p8l_skip8a ; source: test_word_lt.p8:1391 cx16.r3 = &lbl8b lda #p8l_lbl8b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:1392 if x$76 lda #<$76 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1396 skip8b: p8l_skip8b ; source: test_word_lt.p8:1398 if x$77 lda #<$77 jsr p8b_main.p8s_fail_word label_asm_171_afterif ; source: test_word_lt.p8:1402 if x$78 lda #<$78 jsr p8b_main.p8s_fail_word bra label_asm_172_afterif label_asm_173_else ; source: test_word_lt.p8:1405 success++ inc p8b_main.p8v_success label_asm_172_afterif ; source: test_word_lt.p8:1407 value=-1 lda #<-1 ldy #>-1 sta p8v_value sty p8v_value+1 ; source: test_word_lt.p8:1409 if x$79 lda #<$79 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1413 skip9a: p8l_skip9a ; source: test_word_lt.p8:1415 cx16.r3 = &lbl9b lda #p8l_lbl9b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:1416 if x$7a lda #<$7a jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1420 skip9b: p8l_skip9b ; source: test_word_lt.p8:1422 if x$7b lda #<$7b jsr p8b_main.p8s_fail_word label_asm_174_afterif ; source: test_word_lt.p8:1426 if x$7c lda #<$7c jsr p8b_main.p8s_fail_word bra label_asm_175_afterif label_asm_176_else ; source: test_word_lt.p8:1429 success++ inc p8b_main.p8v_success label_asm_175_afterif ; source: test_word_lt.p8:1431 value=0 stz p8v_value stz p8v_value+1 ; source: test_word_lt.p8:1433 if xp8l_lbl10b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:1440 if x1 sta p8v_value sty p8v_value+1 ; source: test_word_lt.p8:1457 if xp8l_lbl11b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:1464 if x$aa sta p8v_value sty p8v_value+1 ; source: test_word_lt.p8:1481 if xp8l_lbl12b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:1488 if x$7700 sta p8v_value sty p8v_value+1 ; source: test_word_lt.p8:1505 if xp8l_lbl13b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:1512 if x$7fff sta p8v_value sty p8v_value+1 ; source: test_word_lt.p8:1529 if xp8l_lbl14b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:1536 if x-$5545 sta p8v_value sty p8v_value+1 ; source: test_word_lt.p8:1554 if x$7d lda #<$7d jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1558 skip15a: p8l_skip15a ; source: test_word_lt.p8:1560 cx16.r3 = &lbl15b lda #p8l_lbl15b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:1561 if x$7e lda #<$7e jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1565 skip15b: p8l_skip15b ; source: test_word_lt.p8:1567 if x$7f lda #<$7f jsr p8b_main.p8s_fail_word label_asm_192_afterif ; source: test_word_lt.p8:1571 if x$80 lda #<$80 jsr p8b_main.p8s_fail_word bra label_asm_193_afterif label_asm_194_else ; source: test_word_lt.p8:1574 success++ inc p8b_main.p8v_success label_asm_193_afterif ; source: test_word_lt.p8:1576 value=-1 lda #<-1 ldy #>-1 sta p8v_value sty p8v_value+1 ; source: test_word_lt.p8:1578 if x$81 lda #<$81 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1582 skip16a: p8l_skip16a ; source: test_word_lt.p8:1584 cx16.r3 = &lbl16b lda #p8l_lbl16b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:1585 if x$82 lda #<$82 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1589 skip16b: p8l_skip16b ; source: test_word_lt.p8:1591 if x$83 lda #<$83 jsr p8b_main.p8s_fail_word label_asm_195_afterif ; source: test_word_lt.p8:1595 if x$84 lda #<$84 jsr p8b_main.p8s_fail_word bra label_asm_196_afterif label_asm_197_else ; source: test_word_lt.p8:1598 success++ inc p8b_main.p8v_success label_asm_196_afterif ; source: test_word_lt.p8:1600 value=0 stz p8v_value stz p8v_value+1 ; source: test_word_lt.p8:1602 if x$85 lda #<$85 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1606 skip17a: p8l_skip17a ; source: test_word_lt.p8:1608 cx16.r3 = &lbl17b lda #p8l_lbl17b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:1609 if x$86 lda #<$86 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1613 skip17b: p8l_skip17b ; source: test_word_lt.p8:1615 if x$87 lda #<$87 jsr p8b_main.p8s_fail_word label_asm_198_afterif ; source: test_word_lt.p8:1619 if x$88 lda #<$88 jsr p8b_main.p8s_fail_word bra label_asm_199_afterif label_asm_200_else ; source: test_word_lt.p8:1622 success++ inc p8b_main.p8v_success label_asm_199_afterif ; source: test_word_lt.p8:1624 value=1 lda #<1 ldy #>1 sta p8v_value sty p8v_value+1 ; source: test_word_lt.p8:1626 if xp8l_lbl18b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:1633 if x$aa sta p8v_value sty p8v_value+1 ; source: test_word_lt.p8:1650 if xp8l_lbl19b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:1657 if x$7700 sta p8v_value sty p8v_value+1 ; source: test_word_lt.p8:1674 if xp8l_lbl20b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:1681 if x$7fff sta p8v_value sty p8v_value+1 ; source: test_word_lt.p8:1698 if xp8l_lbl21b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:1705 if x1 sta p8v_x sty p8v_x+1 ; source: test_word_lt.p8:1721 value=-21829 lda #<-$5545 ldy #>-$5545 sta p8v_value sty p8v_value+1 ; source: test_word_lt.p8:1723 if x$89 lda #<$89 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1727 skip22a: p8l_skip22a ; source: test_word_lt.p8:1729 cx16.r3 = &lbl22b lda #p8l_lbl22b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:1730 if x$8a lda #<$8a jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1734 skip22b: p8l_skip22b ; source: test_word_lt.p8:1736 if x$8b lda #<$8b jsr p8b_main.p8s_fail_word label_asm_213_afterif ; source: test_word_lt.p8:1740 if x$8c lda #<$8c jsr p8b_main.p8s_fail_word bra label_asm_214_afterif label_asm_215_else ; source: test_word_lt.p8:1743 success++ inc p8b_main.p8v_success label_asm_214_afterif ; source: test_word_lt.p8:1745 value=-1 lda #<-1 ldy #>-1 sta p8v_value sty p8v_value+1 ; source: test_word_lt.p8:1747 if x$8d lda #<$8d jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1751 skip23a: p8l_skip23a ; source: test_word_lt.p8:1753 cx16.r3 = &lbl23b lda #p8l_lbl23b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:1754 if x$8e lda #<$8e jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1758 skip23b: p8l_skip23b ; source: test_word_lt.p8:1760 if x$8f lda #<$8f jsr p8b_main.p8s_fail_word label_asm_216_afterif ; source: test_word_lt.p8:1764 if x$90 lda #<$90 jsr p8b_main.p8s_fail_word bra label_asm_217_afterif label_asm_218_else ; source: test_word_lt.p8:1767 success++ inc p8b_main.p8v_success label_asm_217_afterif ; source: test_word_lt.p8:1769 value=0 stz p8v_value stz p8v_value+1 ; source: test_word_lt.p8:1771 if x$91 lda #<$91 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1775 skip24a: p8l_skip24a ; source: test_word_lt.p8:1777 cx16.r3 = &lbl24b lda #p8l_lbl24b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:1778 if x$92 lda #<$92 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1782 skip24b: p8l_skip24b ; source: test_word_lt.p8:1784 if x$93 lda #<$93 jsr p8b_main.p8s_fail_word label_asm_219_afterif ; source: test_word_lt.p8:1788 if x$94 lda #<$94 jsr p8b_main.p8s_fail_word bra label_asm_220_afterif label_asm_221_else ; source: test_word_lt.p8:1791 success++ inc p8b_main.p8v_success label_asm_220_afterif ; source: test_word_lt.p8:1793 value=1 lda #<1 ldy #>1 sta p8v_value sty p8v_value+1 ; source: test_word_lt.p8:1795 if x$95 lda #<$95 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1799 skip25a: p8l_skip25a ; source: test_word_lt.p8:1801 cx16.r3 = &lbl25b lda #p8l_lbl25b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:1802 if x$96 lda #<$96 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1806 skip25b: p8l_skip25b ; source: test_word_lt.p8:1808 if x$97 lda #<$97 jsr p8b_main.p8s_fail_word label_asm_222_afterif ; source: test_word_lt.p8:1812 if x$98 lda #<$98 jsr p8b_main.p8s_fail_word bra label_asm_223_afterif label_asm_224_else ; source: test_word_lt.p8:1815 success++ inc p8b_main.p8v_success label_asm_223_afterif ; source: test_word_lt.p8:1817 value=170 lda #<$aa ldy #>$aa sta p8v_value sty p8v_value+1 ; source: test_word_lt.p8:1819 if xp8l_lbl26b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:1826 if x$7700 sta p8v_value sty p8v_value+1 ; source: test_word_lt.p8:1843 if xp8l_lbl27b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:1850 if x$7fff sta p8v_value sty p8v_value+1 ; source: test_word_lt.p8:1867 if xp8l_lbl28b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:1874 if x$aa sta p8v_x sty p8v_x+1 ; source: test_word_lt.p8:1890 value=-21829 lda #<-$5545 ldy #>-$5545 sta p8v_value sty p8v_value+1 ; source: test_word_lt.p8:1892 if x$99 lda #<$99 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1896 skip29a: p8l_skip29a ; source: test_word_lt.p8:1898 cx16.r3 = &lbl29b lda #p8l_lbl29b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:1899 if x$9a lda #<$9a jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1903 skip29b: p8l_skip29b ; source: test_word_lt.p8:1905 if x$9b lda #<$9b jsr p8b_main.p8s_fail_word label_asm_234_afterif ; source: test_word_lt.p8:1909 if x$9c lda #<$9c jsr p8b_main.p8s_fail_word bra label_asm_235_afterif label_asm_236_else ; source: test_word_lt.p8:1912 success++ inc p8b_main.p8v_success label_asm_235_afterif ; source: test_word_lt.p8:1914 value=-1 lda #<-1 ldy #>-1 sta p8v_value sty p8v_value+1 ; source: test_word_lt.p8:1916 if x$9d lda #<$9d jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1920 skip30a: p8l_skip30a ; source: test_word_lt.p8:1922 cx16.r3 = &lbl30b lda #p8l_lbl30b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:1923 if x$9e lda #<$9e jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1927 skip30b: p8l_skip30b ; source: test_word_lt.p8:1929 if x$9f lda #<$9f jsr p8b_main.p8s_fail_word label_asm_237_afterif ; source: test_word_lt.p8:1933 if x$a0 lda #<$a0 jsr p8b_main.p8s_fail_word bra label_asm_238_afterif label_asm_239_else ; source: test_word_lt.p8:1936 success++ inc p8b_main.p8v_success label_asm_238_afterif ; source: test_word_lt.p8:1938 value=0 stz p8v_value stz p8v_value+1 ; source: test_word_lt.p8:1940 if x$a1 lda #<$a1 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1944 skip31a: p8l_skip31a ; source: test_word_lt.p8:1946 cx16.r3 = &lbl31b lda #p8l_lbl31b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:1947 if x$a2 lda #<$a2 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1951 skip31b: p8l_skip31b ; source: test_word_lt.p8:1953 if x$a3 lda #<$a3 jsr p8b_main.p8s_fail_word label_asm_240_afterif ; source: test_word_lt.p8:1957 if x$a4 lda #<$a4 jsr p8b_main.p8s_fail_word bra label_asm_241_afterif label_asm_242_else ; source: test_word_lt.p8:1960 success++ inc p8b_main.p8v_success label_asm_241_afterif ; source: test_word_lt.p8:1962 value=1 lda #<1 ldy #>1 sta p8v_value sty p8v_value+1 ; source: test_word_lt.p8:1964 if x$a5 lda #<$a5 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1968 skip32a: p8l_skip32a ; source: test_word_lt.p8:1970 cx16.r3 = &lbl32b lda #p8l_lbl32b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:1971 if x$a6 lda #<$a6 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1975 skip32b: p8l_skip32b ; source: test_word_lt.p8:1977 if x$a7 lda #<$a7 jsr p8b_main.p8s_fail_word label_asm_243_afterif ; source: test_word_lt.p8:1981 if x$a8 lda #<$a8 jsr p8b_main.p8s_fail_word bra label_asm_244_afterif label_asm_245_else ; source: test_word_lt.p8:1984 success++ inc p8b_main.p8v_success label_asm_244_afterif ; source: test_word_lt.p8:1986 value=170 lda #<$aa ldy #>$aa sta p8v_value sty p8v_value+1 ; source: test_word_lt.p8:1988 if x$a9 lda #<$a9 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1992 skip33a: p8l_skip33a ; source: test_word_lt.p8:1994 cx16.r3 = &lbl33b lda #p8l_lbl33b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:1995 if x$aa lda #<$aa jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:1999 skip33b: p8l_skip33b ; source: test_word_lt.p8:2001 if x$ab lda #<$ab jsr p8b_main.p8s_fail_word label_asm_246_afterif ; source: test_word_lt.p8:2005 if x$ac lda #<$ac jsr p8b_main.p8s_fail_word bra label_asm_247_afterif label_asm_248_else ; source: test_word_lt.p8:2008 success++ inc p8b_main.p8v_success label_asm_247_afterif ; source: test_word_lt.p8:2010 value=30464 lda #<$7700 ldy #>$7700 sta p8v_value sty p8v_value+1 ; source: test_word_lt.p8:2012 if xp8l_lbl34b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:2019 if x$7fff sta p8v_value sty p8v_value+1 ; source: test_word_lt.p8:2036 if xp8l_lbl35b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:2043 if x$7700 sta p8v_x sty p8v_x+1 ; source: test_word_lt.p8:2059 value=-21829 lda #<-$5545 ldy #>-$5545 sta p8v_value sty p8v_value+1 ; source: test_word_lt.p8:2061 if x$ad lda #<$ad jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2065 skip36a: p8l_skip36a ; source: test_word_lt.p8:2067 cx16.r3 = &lbl36b lda #p8l_lbl36b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:2068 if x$ae lda #<$ae jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2072 skip36b: p8l_skip36b ; source: test_word_lt.p8:2074 if x$af lda #<$af jsr p8b_main.p8s_fail_word label_asm_255_afterif ; source: test_word_lt.p8:2078 if x$b0 lda #<$b0 jsr p8b_main.p8s_fail_word bra label_asm_256_afterif label_asm_257_else ; source: test_word_lt.p8:2081 success++ inc p8b_main.p8v_success label_asm_256_afterif ; source: test_word_lt.p8:2083 value=-1 lda #<-1 ldy #>-1 sta p8v_value sty p8v_value+1 ; source: test_word_lt.p8:2085 if x$b1 lda #<$b1 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2089 skip37a: p8l_skip37a ; source: test_word_lt.p8:2091 cx16.r3 = &lbl37b lda #p8l_lbl37b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:2092 if x$b2 lda #<$b2 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2096 skip37b: p8l_skip37b ; source: test_word_lt.p8:2098 if x$b3 lda #<$b3 jsr p8b_main.p8s_fail_word label_asm_258_afterif ; source: test_word_lt.p8:2102 if x$b4 lda #<$b4 jsr p8b_main.p8s_fail_word bra label_asm_259_afterif label_asm_260_else ; source: test_word_lt.p8:2105 success++ inc p8b_main.p8v_success label_asm_259_afterif ; source: test_word_lt.p8:2107 value=0 stz p8v_value stz p8v_value+1 ; source: test_word_lt.p8:2109 if x$b5 lda #<$b5 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2113 skip38a: p8l_skip38a ; source: test_word_lt.p8:2115 cx16.r3 = &lbl38b lda #p8l_lbl38b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:2116 if x$b6 lda #<$b6 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2120 skip38b: p8l_skip38b ; source: test_word_lt.p8:2122 if x$b7 lda #<$b7 jsr p8b_main.p8s_fail_word label_asm_261_afterif ; source: test_word_lt.p8:2126 if x$b8 lda #<$b8 jsr p8b_main.p8s_fail_word bra label_asm_262_afterif label_asm_263_else ; source: test_word_lt.p8:2129 success++ inc p8b_main.p8v_success label_asm_262_afterif ; source: test_word_lt.p8:2131 value=1 lda #<1 ldy #>1 sta p8v_value sty p8v_value+1 ; source: test_word_lt.p8:2133 if x$b9 lda #<$b9 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2137 skip39a: p8l_skip39a ; source: test_word_lt.p8:2139 cx16.r3 = &lbl39b lda #p8l_lbl39b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:2140 if x$ba lda #<$ba jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2144 skip39b: p8l_skip39b ; source: test_word_lt.p8:2146 if x$bb lda #<$bb jsr p8b_main.p8s_fail_word label_asm_264_afterif ; source: test_word_lt.p8:2150 if x$bc lda #<$bc jsr p8b_main.p8s_fail_word bra label_asm_265_afterif label_asm_266_else ; source: test_word_lt.p8:2153 success++ inc p8b_main.p8v_success label_asm_265_afterif ; source: test_word_lt.p8:2155 value=170 lda #<$aa ldy #>$aa sta p8v_value sty p8v_value+1 ; source: test_word_lt.p8:2157 if x$bd lda #<$bd jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2161 skip40a: p8l_skip40a ; source: test_word_lt.p8:2163 cx16.r3 = &lbl40b lda #p8l_lbl40b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:2164 if x$be lda #<$be jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2168 skip40b: p8l_skip40b ; source: test_word_lt.p8:2170 if x$bf lda #<$bf jsr p8b_main.p8s_fail_word label_asm_267_afterif ; source: test_word_lt.p8:2174 if x$c0 lda #<$c0 jsr p8b_main.p8s_fail_word bra label_asm_268_afterif label_asm_269_else ; source: test_word_lt.p8:2177 success++ inc p8b_main.p8v_success label_asm_268_afterif ; source: test_word_lt.p8:2179 value=30464 lda #<$7700 ldy #>$7700 sta p8v_value sty p8v_value+1 ; source: test_word_lt.p8:2181 if x$c1 lda #<$c1 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2185 skip41a: p8l_skip41a ; source: test_word_lt.p8:2187 cx16.r3 = &lbl41b lda #p8l_lbl41b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:2188 if x$c2 lda #<$c2 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2192 skip41b: p8l_skip41b ; source: test_word_lt.p8:2194 if x$c3 lda #<$c3 jsr p8b_main.p8s_fail_word label_asm_270_afterif ; source: test_word_lt.p8:2198 if x$c4 lda #<$c4 jsr p8b_main.p8s_fail_word bra label_asm_271_afterif label_asm_272_else ; source: test_word_lt.p8:2201 success++ inc p8b_main.p8v_success label_asm_271_afterif ; source: test_word_lt.p8:2203 value=32767 lda #<$7fff ldy #>$7fff sta p8v_value sty p8v_value+1 ; source: test_word_lt.p8:2205 if xp8l_lbl42b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:2212 if x$7fff sta p8v_x sty p8v_x+1 ; source: test_word_lt.p8:2228 value=-21829 lda #<-$5545 ldy #>-$5545 sta p8v_value sty p8v_value+1 ; source: test_word_lt.p8:2230 if x$c5 lda #<$c5 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2234 skip43a: p8l_skip43a ; source: test_word_lt.p8:2236 cx16.r3 = &lbl43b lda #p8l_lbl43b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:2237 if x$c6 lda #<$c6 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2241 skip43b: p8l_skip43b ; source: test_word_lt.p8:2243 if x$c7 lda #<$c7 jsr p8b_main.p8s_fail_word label_asm_276_afterif ; source: test_word_lt.p8:2247 if x$c8 lda #<$c8 jsr p8b_main.p8s_fail_word bra label_asm_277_afterif label_asm_278_else ; source: test_word_lt.p8:2250 success++ inc p8b_main.p8v_success label_asm_277_afterif ; source: test_word_lt.p8:2252 value=-1 lda #<-1 ldy #>-1 sta p8v_value sty p8v_value+1 ; source: test_word_lt.p8:2254 if x$c9 lda #<$c9 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2258 skip44a: p8l_skip44a ; source: test_word_lt.p8:2260 cx16.r3 = &lbl44b lda #p8l_lbl44b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:2261 if x$ca lda #<$ca jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2265 skip44b: p8l_skip44b ; source: test_word_lt.p8:2267 if x$cb lda #<$cb jsr p8b_main.p8s_fail_word label_asm_279_afterif ; source: test_word_lt.p8:2271 if x$cc lda #<$cc jsr p8b_main.p8s_fail_word bra label_asm_280_afterif label_asm_281_else ; source: test_word_lt.p8:2274 success++ inc p8b_main.p8v_success label_asm_280_afterif ; source: test_word_lt.p8:2276 value=0 stz p8v_value stz p8v_value+1 ; source: test_word_lt.p8:2278 if x$cd lda #<$cd jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2282 skip45a: p8l_skip45a ; source: test_word_lt.p8:2284 cx16.r3 = &lbl45b lda #p8l_lbl45b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:2285 if x$ce lda #<$ce jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2289 skip45b: p8l_skip45b ; source: test_word_lt.p8:2291 if x$cf lda #<$cf jsr p8b_main.p8s_fail_word label_asm_282_afterif ; source: test_word_lt.p8:2295 if x$d0 lda #<$d0 jsr p8b_main.p8s_fail_word bra label_asm_283_afterif label_asm_284_else ; source: test_word_lt.p8:2298 success++ inc p8b_main.p8v_success label_asm_283_afterif ; source: test_word_lt.p8:2300 value=1 lda #<1 ldy #>1 sta p8v_value sty p8v_value+1 ; source: test_word_lt.p8:2302 if x$d1 lda #<$d1 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2306 skip46a: p8l_skip46a ; source: test_word_lt.p8:2308 cx16.r3 = &lbl46b lda #p8l_lbl46b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:2309 if x$d2 lda #<$d2 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2313 skip46b: p8l_skip46b ; source: test_word_lt.p8:2315 if x$d3 lda #<$d3 jsr p8b_main.p8s_fail_word label_asm_285_afterif ; source: test_word_lt.p8:2319 if x$d4 lda #<$d4 jsr p8b_main.p8s_fail_word bra label_asm_286_afterif label_asm_287_else ; source: test_word_lt.p8:2322 success++ inc p8b_main.p8v_success label_asm_286_afterif ; source: test_word_lt.p8:2324 value=170 lda #<$aa ldy #>$aa sta p8v_value sty p8v_value+1 ; source: test_word_lt.p8:2326 if x$d5 lda #<$d5 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2330 skip47a: p8l_skip47a ; source: test_word_lt.p8:2332 cx16.r3 = &lbl47b lda #p8l_lbl47b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:2333 if x$d6 lda #<$d6 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2337 skip47b: p8l_skip47b ; source: test_word_lt.p8:2339 if x$d7 lda #<$d7 jsr p8b_main.p8s_fail_word label_asm_288_afterif ; source: test_word_lt.p8:2343 if x$d8 lda #<$d8 jsr p8b_main.p8s_fail_word bra label_asm_289_afterif label_asm_290_else ; source: test_word_lt.p8:2346 success++ inc p8b_main.p8v_success label_asm_289_afterif ; source: test_word_lt.p8:2348 value=30464 lda #<$7700 ldy #>$7700 sta p8v_value sty p8v_value+1 ; source: test_word_lt.p8:2350 if x$d9 lda #<$d9 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2354 skip48a: p8l_skip48a ; source: test_word_lt.p8:2356 cx16.r3 = &lbl48b lda #p8l_lbl48b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:2357 if x$da lda #<$da jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2361 skip48b: p8l_skip48b ; source: test_word_lt.p8:2363 if x$db lda #<$db jsr p8b_main.p8s_fail_word label_asm_291_afterif ; source: test_word_lt.p8:2367 if x$dc lda #<$dc jsr p8b_main.p8s_fail_word bra label_asm_292_afterif label_asm_293_else ; source: test_word_lt.p8:2370 success++ inc p8b_main.p8v_success label_asm_292_afterif ; source: test_word_lt.p8:2372 value=32767 lda #<$7fff ldy #>$7fff sta p8v_value sty p8v_value+1 ; source: test_word_lt.p8:2374 if x$dd lda #<$dd jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2378 skip49a: p8l_skip49a ; source: test_word_lt.p8:2380 cx16.r3 = &lbl49b lda #p8l_lbl49b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:2381 if x$de lda #<$de jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2385 skip49b: p8l_skip49b ; source: test_word_lt.p8:2387 if x$df lda #<$df jsr p8b_main.p8s_fail_word label_asm_294_afterif ; source: test_word_lt.p8:2391 if x$e0 lda #<$e0 jsr p8b_main.p8s_fail_word bra label_asm_295_afterif label_asm_296_else ; source: test_word_lt.p8:2394 success++ inc p8b_main.p8v_success label_asm_295_afterif ; source: test_word_lt.p8:2396 verify_success(112) lda #$70 jmp p8b_main.p8s_verify_success ; source: test_word_lt.p8:1210 sub test_cmp_var() { ; variables .section BSS .send BSS ; non-zeropage variables without initialization value .section BSS p8v_value .sint ? p8v_x .sint ? .send BSS .pend ; source: test_word_lt.p8:2398 sub test_cmp_array() { p8s_test_cmp_array .proc ; statements ; source: test_word_lt.p8:2399 word @shared x ; source: test_word_lt.p8:2400 word[] values = [0, 0] ; source: test_word_lt.p8:2399 word @shared x stz p8v_x stz p8v_x+1 ; source: test_word_lt.p8:2401 success = 0 stz p8b_main.p8v_success ; source: test_word_lt.p8:2402 x=-21829 lda #<-$5545 ldy #>-$5545 sta p8v_x sty p8v_x+1 ; source: test_word_lt.p8:2403 values[1]=-21829 ldy #2 lda #<-$5545 sta p8v_values,y lda #>-$5545 sta p8v_values+1,y ; source: test_word_lt.p8:2405 if x$e1 lda #<$e1 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2409 skip1a: p8l_skip1a ; source: test_word_lt.p8:2411 cx16.r3 = &lbl1b lda #p8l_lbl1b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:2412 if x$e2 lda #<$e2 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2416 skip1b: p8l_skip1b ; source: test_word_lt.p8:2418 if x$e3 lda #<$e3 jsr p8b_main.p8s_fail_word label_asm_297_afterif ; source: test_word_lt.p8:2422 if x$e4 lda #<$e4 jsr p8b_main.p8s_fail_word bra label_asm_298_afterif label_asm_299_else ; source: test_word_lt.p8:2425 success++ inc p8b_main.p8v_success label_asm_298_afterif ; source: test_word_lt.p8:2427 values[1]=-1 ldy #2 lda #<-1 sta p8v_values,y lda #>-1 sta p8v_values+1,y ; source: test_word_lt.p8:2429 if xp8l_lbl2b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:2436 if xp8l_lbl3b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:2460 if x1 sta p8v_values+1,y ; source: test_word_lt.p8:2477 if xp8l_lbl4b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:2484 if x$aa sta p8v_values+1,y ; source: test_word_lt.p8:2501 if xp8l_lbl5b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:2508 if x$7700 sta p8v_values+1,y ; source: test_word_lt.p8:2525 if xp8l_lbl6b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:2532 if x$7fff sta p8v_values+1,y ; source: test_word_lt.p8:2549 if xp8l_lbl7b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:2556 if x-1 sta p8v_x sty p8v_x+1 ; source: test_word_lt.p8:2572 values[1]=-21829 ldy #2 lda #<-$5545 sta p8v_values,y lda #>-$5545 sta p8v_values+1,y ; source: test_word_lt.p8:2574 if x$e5 lda #<$e5 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2578 skip8a: p8l_skip8a ; source: test_word_lt.p8:2580 cx16.r3 = &lbl8b lda #p8l_lbl8b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:2581 if x$e6 lda #<$e6 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2585 skip8b: p8l_skip8b ; source: test_word_lt.p8:2587 if x$e7 lda #<$e7 jsr p8b_main.p8s_fail_word label_asm_318_afterif ; source: test_word_lt.p8:2591 if x$e8 lda #<$e8 jsr p8b_main.p8s_fail_word bra label_asm_319_afterif label_asm_320_else ; source: test_word_lt.p8:2594 success++ inc p8b_main.p8v_success label_asm_319_afterif ; source: test_word_lt.p8:2596 values[1]=-1 ldy #2 lda #<-1 sta p8v_values,y lda #>-1 sta p8v_values+1,y ; source: test_word_lt.p8:2598 if x$e9 lda #<$e9 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2602 skip9a: p8l_skip9a ; source: test_word_lt.p8:2604 cx16.r3 = &lbl9b lda #p8l_lbl9b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:2605 if x$ea lda #<$ea jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2609 skip9b: p8l_skip9b ; source: test_word_lt.p8:2611 if x$eb lda #<$eb jsr p8b_main.p8s_fail_word label_asm_321_afterif ; source: test_word_lt.p8:2615 if x$ec lda #<$ec jsr p8b_main.p8s_fail_word bra label_asm_322_afterif label_asm_323_else ; source: test_word_lt.p8:2618 success++ inc p8b_main.p8v_success label_asm_322_afterif ; source: test_word_lt.p8:2620 values[1]=0 ldy #2 lda #0 sta p8v_values,y sta p8v_values+1,y ; source: test_word_lt.p8:2622 if xp8l_lbl10b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:2629 if x1 sta p8v_values+1,y ; source: test_word_lt.p8:2646 if xp8l_lbl11b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:2653 if x$aa sta p8v_values+1,y ; source: test_word_lt.p8:2670 if xp8l_lbl12b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:2677 if x$7700 sta p8v_values+1,y ; source: test_word_lt.p8:2694 if xp8l_lbl13b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:2701 if x$7fff sta p8v_values+1,y ; source: test_word_lt.p8:2718 if xp8l_lbl14b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:2725 if x-$5545 sta p8v_values+1,y ; source: test_word_lt.p8:2743 if x$ed lda #<$ed jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2747 skip15a: p8l_skip15a ; source: test_word_lt.p8:2749 cx16.r3 = &lbl15b lda #p8l_lbl15b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:2750 if x$ee lda #<$ee jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2754 skip15b: p8l_skip15b ; source: test_word_lt.p8:2756 if x$ef lda #<$ef jsr p8b_main.p8s_fail_word label_asm_339_afterif ; source: test_word_lt.p8:2760 if x$f0 lda #<$f0 jsr p8b_main.p8s_fail_word bra label_asm_340_afterif label_asm_341_else ; source: test_word_lt.p8:2763 success++ inc p8b_main.p8v_success label_asm_340_afterif ; source: test_word_lt.p8:2765 values[1]=-1 ldy #2 lda #<-1 sta p8v_values,y lda #>-1 sta p8v_values+1,y ; source: test_word_lt.p8:2767 if x$f1 lda #<$f1 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2771 skip16a: p8l_skip16a ; source: test_word_lt.p8:2773 cx16.r3 = &lbl16b lda #p8l_lbl16b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:2774 if x$f2 lda #<$f2 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2778 skip16b: p8l_skip16b ; source: test_word_lt.p8:2780 if x$f3 lda #<$f3 jsr p8b_main.p8s_fail_word label_asm_342_afterif ; source: test_word_lt.p8:2784 if x$f4 lda #<$f4 jsr p8b_main.p8s_fail_word bra label_asm_343_afterif label_asm_344_else ; source: test_word_lt.p8:2787 success++ inc p8b_main.p8v_success label_asm_343_afterif ; source: test_word_lt.p8:2789 values[1]=0 ldy #2 lda #0 sta p8v_values,y sta p8v_values+1,y ; source: test_word_lt.p8:2791 if x$f5 lda #<$f5 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2795 skip17a: p8l_skip17a ; source: test_word_lt.p8:2797 cx16.r3 = &lbl17b lda #p8l_lbl17b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:2798 if x$f6 lda #<$f6 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2802 skip17b: p8l_skip17b ; source: test_word_lt.p8:2804 if x$f7 lda #<$f7 jsr p8b_main.p8s_fail_word label_asm_345_afterif ; source: test_word_lt.p8:2808 if x$f8 lda #<$f8 jsr p8b_main.p8s_fail_word bra label_asm_346_afterif label_asm_347_else ; source: test_word_lt.p8:2811 success++ inc p8b_main.p8v_success label_asm_346_afterif ; source: test_word_lt.p8:2813 values[1]=1 ldy #2 lda #<1 sta p8v_values,y lda #>1 sta p8v_values+1,y ; source: test_word_lt.p8:2815 if xp8l_lbl18b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:2822 if x$aa sta p8v_values+1,y ; source: test_word_lt.p8:2839 if xp8l_lbl19b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:2846 if x$7700 sta p8v_values+1,y ; source: test_word_lt.p8:2863 if xp8l_lbl20b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:2870 if x$7fff sta p8v_values+1,y ; source: test_word_lt.p8:2887 if xp8l_lbl21b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:2894 if x1 sta p8v_x sty p8v_x+1 ; source: test_word_lt.p8:2910 values[1]=-21829 ldy #2 lda #<-$5545 sta p8v_values,y lda #>-$5545 sta p8v_values+1,y ; source: test_word_lt.p8:2912 if x$f9 lda #<$f9 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2916 skip22a: p8l_skip22a ; source: test_word_lt.p8:2918 cx16.r3 = &lbl22b lda #p8l_lbl22b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:2919 if x$fa lda #<$fa jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2923 skip22b: p8l_skip22b ; source: test_word_lt.p8:2925 if x$fb lda #<$fb jsr p8b_main.p8s_fail_word label_asm_360_afterif ; source: test_word_lt.p8:2929 if x$fc lda #<$fc jsr p8b_main.p8s_fail_word bra label_asm_361_afterif label_asm_362_else ; source: test_word_lt.p8:2932 success++ inc p8b_main.p8v_success label_asm_361_afterif ; source: test_word_lt.p8:2934 values[1]=-1 ldy #2 lda #<-1 sta p8v_values,y lda #>-1 sta p8v_values+1,y ; source: test_word_lt.p8:2936 if x$fd lda #<$fd jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2940 skip23a: p8l_skip23a ; source: test_word_lt.p8:2942 cx16.r3 = &lbl23b lda #p8l_lbl23b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:2943 if x$fe lda #<$fe jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2947 skip23b: p8l_skip23b ; source: test_word_lt.p8:2949 if x$ff lda #<$ff jsr p8b_main.p8s_fail_word label_asm_363_afterif ; source: test_word_lt.p8:2953 if x$0100 lda #<$0100 jsr p8b_main.p8s_fail_word bra label_asm_364_afterif label_asm_365_else ; source: test_word_lt.p8:2956 success++ inc p8b_main.p8v_success label_asm_364_afterif ; source: test_word_lt.p8:2958 values[1]=0 ldy #2 lda #0 sta p8v_values,y sta p8v_values+1,y ; source: test_word_lt.p8:2960 if x$0101 lda #<$0101 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2964 skip24a: p8l_skip24a ; source: test_word_lt.p8:2966 cx16.r3 = &lbl24b lda #p8l_lbl24b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:2967 if x$0102 lda #<$0102 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2971 skip24b: p8l_skip24b ; source: test_word_lt.p8:2973 if x$0103 lda #<$0103 jsr p8b_main.p8s_fail_word label_asm_366_afterif ; source: test_word_lt.p8:2977 if x$0104 lda #<$0104 jsr p8b_main.p8s_fail_word bra label_asm_367_afterif label_asm_368_else ; source: test_word_lt.p8:2980 success++ inc p8b_main.p8v_success label_asm_367_afterif ; source: test_word_lt.p8:2982 values[1]=1 ldy #2 lda #<1 sta p8v_values,y lda #>1 sta p8v_values+1,y ; source: test_word_lt.p8:2984 if x$0105 lda #<$0105 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2988 skip25a: p8l_skip25a ; source: test_word_lt.p8:2990 cx16.r3 = &lbl25b lda #p8l_lbl25b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:2991 if x$0106 lda #<$0106 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:2995 skip25b: p8l_skip25b ; source: test_word_lt.p8:2997 if x$0107 lda #<$0107 jsr p8b_main.p8s_fail_word label_asm_369_afterif ; source: test_word_lt.p8:3001 if x$0108 lda #<$0108 jsr p8b_main.p8s_fail_word bra label_asm_370_afterif label_asm_371_else ; source: test_word_lt.p8:3004 success++ inc p8b_main.p8v_success label_asm_370_afterif ; source: test_word_lt.p8:3006 values[1]=170 ldy #2 lda #<$aa sta p8v_values,y lda #>$aa sta p8v_values+1,y ; source: test_word_lt.p8:3008 if xp8l_lbl26b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:3015 if x$7700 sta p8v_values+1,y ; source: test_word_lt.p8:3032 if xp8l_lbl27b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:3039 if x$7fff sta p8v_values+1,y ; source: test_word_lt.p8:3056 if xp8l_lbl28b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:3063 if x$aa sta p8v_x sty p8v_x+1 ; source: test_word_lt.p8:3079 values[1]=-21829 ldy #2 lda #<-$5545 sta p8v_values,y lda #>-$5545 sta p8v_values+1,y ; source: test_word_lt.p8:3081 if x$0109 lda #<$0109 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3085 skip29a: p8l_skip29a ; source: test_word_lt.p8:3087 cx16.r3 = &lbl29b lda #p8l_lbl29b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:3088 if x$010a lda #<$010a jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3092 skip29b: p8l_skip29b ; source: test_word_lt.p8:3094 if x$010b lda #<$010b jsr p8b_main.p8s_fail_word label_asm_381_afterif ; source: test_word_lt.p8:3098 if x$010c lda #<$010c jsr p8b_main.p8s_fail_word bra label_asm_382_afterif label_asm_383_else ; source: test_word_lt.p8:3101 success++ inc p8b_main.p8v_success label_asm_382_afterif ; source: test_word_lt.p8:3103 values[1]=-1 ldy #2 lda #<-1 sta p8v_values,y lda #>-1 sta p8v_values+1,y ; source: test_word_lt.p8:3105 if x$010d lda #<$010d jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3109 skip30a: p8l_skip30a ; source: test_word_lt.p8:3111 cx16.r3 = &lbl30b lda #p8l_lbl30b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:3112 if x$010e lda #<$010e jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3116 skip30b: p8l_skip30b ; source: test_word_lt.p8:3118 if x$010f lda #<$010f jsr p8b_main.p8s_fail_word label_asm_384_afterif ; source: test_word_lt.p8:3122 if x$0110 lda #<$0110 jsr p8b_main.p8s_fail_word bra label_asm_385_afterif label_asm_386_else ; source: test_word_lt.p8:3125 success++ inc p8b_main.p8v_success label_asm_385_afterif ; source: test_word_lt.p8:3127 values[1]=0 ldy #2 lda #0 sta p8v_values,y sta p8v_values+1,y ; source: test_word_lt.p8:3129 if x$0111 lda #<$0111 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3133 skip31a: p8l_skip31a ; source: test_word_lt.p8:3135 cx16.r3 = &lbl31b lda #p8l_lbl31b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:3136 if x$0112 lda #<$0112 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3140 skip31b: p8l_skip31b ; source: test_word_lt.p8:3142 if x$0113 lda #<$0113 jsr p8b_main.p8s_fail_word label_asm_387_afterif ; source: test_word_lt.p8:3146 if x$0114 lda #<$0114 jsr p8b_main.p8s_fail_word bra label_asm_388_afterif label_asm_389_else ; source: test_word_lt.p8:3149 success++ inc p8b_main.p8v_success label_asm_388_afterif ; source: test_word_lt.p8:3151 values[1]=1 ldy #2 lda #<1 sta p8v_values,y lda #>1 sta p8v_values+1,y ; source: test_word_lt.p8:3153 if x$0115 lda #<$0115 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3157 skip32a: p8l_skip32a ; source: test_word_lt.p8:3159 cx16.r3 = &lbl32b lda #p8l_lbl32b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:3160 if x$0116 lda #<$0116 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3164 skip32b: p8l_skip32b ; source: test_word_lt.p8:3166 if x$0117 lda #<$0117 jsr p8b_main.p8s_fail_word label_asm_390_afterif ; source: test_word_lt.p8:3170 if x$0118 lda #<$0118 jsr p8b_main.p8s_fail_word bra label_asm_391_afterif label_asm_392_else ; source: test_word_lt.p8:3173 success++ inc p8b_main.p8v_success label_asm_391_afterif ; source: test_word_lt.p8:3175 values[1]=170 ldy #2 lda #<$aa sta p8v_values,y lda #>$aa sta p8v_values+1,y ; source: test_word_lt.p8:3177 if x$0119 lda #<$0119 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3181 skip33a: p8l_skip33a ; source: test_word_lt.p8:3183 cx16.r3 = &lbl33b lda #p8l_lbl33b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:3184 if x$011a lda #<$011a jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3188 skip33b: p8l_skip33b ; source: test_word_lt.p8:3190 if x$011b lda #<$011b jsr p8b_main.p8s_fail_word label_asm_393_afterif ; source: test_word_lt.p8:3194 if x$011c lda #<$011c jsr p8b_main.p8s_fail_word bra label_asm_394_afterif label_asm_395_else ; source: test_word_lt.p8:3197 success++ inc p8b_main.p8v_success label_asm_394_afterif ; source: test_word_lt.p8:3199 values[1]=30464 ldy #2 lda #<$7700 sta p8v_values,y lda #>$7700 sta p8v_values+1,y ; source: test_word_lt.p8:3201 if xp8l_lbl34b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:3208 if x$7fff sta p8v_values+1,y ; source: test_word_lt.p8:3225 if xp8l_lbl35b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:3232 if x$7700 sta p8v_x sty p8v_x+1 ; source: test_word_lt.p8:3248 values[1]=-21829 ldy #2 lda #<-$5545 sta p8v_values,y lda #>-$5545 sta p8v_values+1,y ; source: test_word_lt.p8:3250 if x$011d lda #<$011d jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3254 skip36a: p8l_skip36a ; source: test_word_lt.p8:3256 cx16.r3 = &lbl36b lda #p8l_lbl36b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:3257 if x$011e lda #<$011e jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3261 skip36b: p8l_skip36b ; source: test_word_lt.p8:3263 if x$011f lda #<$011f jsr p8b_main.p8s_fail_word label_asm_402_afterif ; source: test_word_lt.p8:3267 if x$0120 lda #<$0120 jsr p8b_main.p8s_fail_word bra label_asm_403_afterif label_asm_404_else ; source: test_word_lt.p8:3270 success++ inc p8b_main.p8v_success label_asm_403_afterif ; source: test_word_lt.p8:3272 values[1]=-1 ldy #2 lda #<-1 sta p8v_values,y lda #>-1 sta p8v_values+1,y ; source: test_word_lt.p8:3274 if x$0121 lda #<$0121 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3278 skip37a: p8l_skip37a ; source: test_word_lt.p8:3280 cx16.r3 = &lbl37b lda #p8l_lbl37b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:3281 if x$0122 lda #<$0122 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3285 skip37b: p8l_skip37b ; source: test_word_lt.p8:3287 if x$0123 lda #<$0123 jsr p8b_main.p8s_fail_word label_asm_405_afterif ; source: test_word_lt.p8:3291 if x$0124 lda #<$0124 jsr p8b_main.p8s_fail_word bra label_asm_406_afterif label_asm_407_else ; source: test_word_lt.p8:3294 success++ inc p8b_main.p8v_success label_asm_406_afterif ; source: test_word_lt.p8:3296 values[1]=0 ldy #2 lda #0 sta p8v_values,y sta p8v_values+1,y ; source: test_word_lt.p8:3298 if x$0125 lda #<$0125 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3302 skip38a: p8l_skip38a ; source: test_word_lt.p8:3304 cx16.r3 = &lbl38b lda #p8l_lbl38b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:3305 if x$0126 lda #<$0126 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3309 skip38b: p8l_skip38b ; source: test_word_lt.p8:3311 if x$0127 lda #<$0127 jsr p8b_main.p8s_fail_word label_asm_408_afterif ; source: test_word_lt.p8:3315 if x$0128 lda #<$0128 jsr p8b_main.p8s_fail_word bra label_asm_409_afterif label_asm_410_else ; source: test_word_lt.p8:3318 success++ inc p8b_main.p8v_success label_asm_409_afterif ; source: test_word_lt.p8:3320 values[1]=1 ldy #2 lda #<1 sta p8v_values,y lda #>1 sta p8v_values+1,y ; source: test_word_lt.p8:3322 if x$0129 lda #<$0129 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3326 skip39a: p8l_skip39a ; source: test_word_lt.p8:3328 cx16.r3 = &lbl39b lda #p8l_lbl39b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:3329 if x$012a lda #<$012a jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3333 skip39b: p8l_skip39b ; source: test_word_lt.p8:3335 if x$012b lda #<$012b jsr p8b_main.p8s_fail_word label_asm_411_afterif ; source: test_word_lt.p8:3339 if x$012c lda #<$012c jsr p8b_main.p8s_fail_word bra label_asm_412_afterif label_asm_413_else ; source: test_word_lt.p8:3342 success++ inc p8b_main.p8v_success label_asm_412_afterif ; source: test_word_lt.p8:3344 values[1]=170 ldy #2 lda #<$aa sta p8v_values,y lda #>$aa sta p8v_values+1,y ; source: test_word_lt.p8:3346 if x$012d lda #<$012d jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3350 skip40a: p8l_skip40a ; source: test_word_lt.p8:3352 cx16.r3 = &lbl40b lda #p8l_lbl40b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:3353 if x$012e lda #<$012e jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3357 skip40b: p8l_skip40b ; source: test_word_lt.p8:3359 if x$012f lda #<$012f jsr p8b_main.p8s_fail_word label_asm_414_afterif ; source: test_word_lt.p8:3363 if x$0130 lda #<$0130 jsr p8b_main.p8s_fail_word bra label_asm_415_afterif label_asm_416_else ; source: test_word_lt.p8:3366 success++ inc p8b_main.p8v_success label_asm_415_afterif ; source: test_word_lt.p8:3368 values[1]=30464 ldy #2 lda #<$7700 sta p8v_values,y lda #>$7700 sta p8v_values+1,y ; source: test_word_lt.p8:3370 if x$0131 lda #<$0131 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3374 skip41a: p8l_skip41a ; source: test_word_lt.p8:3376 cx16.r3 = &lbl41b lda #p8l_lbl41b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:3377 if x$0132 lda #<$0132 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3381 skip41b: p8l_skip41b ; source: test_word_lt.p8:3383 if x$0133 lda #<$0133 jsr p8b_main.p8s_fail_word label_asm_417_afterif ; source: test_word_lt.p8:3387 if x$0134 lda #<$0134 jsr p8b_main.p8s_fail_word bra label_asm_418_afterif label_asm_419_else ; source: test_word_lt.p8:3390 success++ inc p8b_main.p8v_success label_asm_418_afterif ; source: test_word_lt.p8:3392 values[1]=32767 ldy #2 lda #<$7fff sta p8v_values,y lda #>$7fff sta p8v_values+1,y ; source: test_word_lt.p8:3394 if xp8l_lbl42b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:3401 if x$7fff sta p8v_x sty p8v_x+1 ; source: test_word_lt.p8:3417 values[1]=-21829 ldy #2 lda #<-$5545 sta p8v_values,y lda #>-$5545 sta p8v_values+1,y ; source: test_word_lt.p8:3419 if x$0135 lda #<$0135 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3423 skip43a: p8l_skip43a ; source: test_word_lt.p8:3425 cx16.r3 = &lbl43b lda #p8l_lbl43b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:3426 if x$0136 lda #<$0136 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3430 skip43b: p8l_skip43b ; source: test_word_lt.p8:3432 if x$0137 lda #<$0137 jsr p8b_main.p8s_fail_word label_asm_423_afterif ; source: test_word_lt.p8:3436 if x$0138 lda #<$0138 jsr p8b_main.p8s_fail_word bra label_asm_424_afterif label_asm_425_else ; source: test_word_lt.p8:3439 success++ inc p8b_main.p8v_success label_asm_424_afterif ; source: test_word_lt.p8:3441 values[1]=-1 ldy #2 lda #<-1 sta p8v_values,y lda #>-1 sta p8v_values+1,y ; source: test_word_lt.p8:3443 if x$0139 lda #<$0139 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3447 skip44a: p8l_skip44a ; source: test_word_lt.p8:3449 cx16.r3 = &lbl44b lda #p8l_lbl44b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:3450 if x$013a lda #<$013a jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3454 skip44b: p8l_skip44b ; source: test_word_lt.p8:3456 if x$013b lda #<$013b jsr p8b_main.p8s_fail_word label_asm_426_afterif ; source: test_word_lt.p8:3460 if x$013c lda #<$013c jsr p8b_main.p8s_fail_word bra label_asm_427_afterif label_asm_428_else ; source: test_word_lt.p8:3463 success++ inc p8b_main.p8v_success label_asm_427_afterif ; source: test_word_lt.p8:3465 values[1]=0 ldy #2 lda #0 sta p8v_values,y sta p8v_values+1,y ; source: test_word_lt.p8:3467 if x$013d lda #<$013d jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3471 skip45a: p8l_skip45a ; source: test_word_lt.p8:3473 cx16.r3 = &lbl45b lda #p8l_lbl45b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:3474 if x$013e lda #<$013e jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3478 skip45b: p8l_skip45b ; source: test_word_lt.p8:3480 if x$013f lda #<$013f jsr p8b_main.p8s_fail_word label_asm_429_afterif ; source: test_word_lt.p8:3484 if x$0140 lda #<$0140 jsr p8b_main.p8s_fail_word bra label_asm_430_afterif label_asm_431_else ; source: test_word_lt.p8:3487 success++ inc p8b_main.p8v_success label_asm_430_afterif ; source: test_word_lt.p8:3489 values[1]=1 ldy #2 lda #<1 sta p8v_values,y lda #>1 sta p8v_values+1,y ; source: test_word_lt.p8:3491 if x$0141 lda #<$0141 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3495 skip46a: p8l_skip46a ; source: test_word_lt.p8:3497 cx16.r3 = &lbl46b lda #p8l_lbl46b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:3498 if x$0142 lda #<$0142 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3502 skip46b: p8l_skip46b ; source: test_word_lt.p8:3504 if x$0143 lda #<$0143 jsr p8b_main.p8s_fail_word label_asm_432_afterif ; source: test_word_lt.p8:3508 if x$0144 lda #<$0144 jsr p8b_main.p8s_fail_word bra label_asm_433_afterif label_asm_434_else ; source: test_word_lt.p8:3511 success++ inc p8b_main.p8v_success label_asm_433_afterif ; source: test_word_lt.p8:3513 values[1]=170 ldy #2 lda #<$aa sta p8v_values,y lda #>$aa sta p8v_values+1,y ; source: test_word_lt.p8:3515 if x$0145 lda #<$0145 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3519 skip47a: p8l_skip47a ; source: test_word_lt.p8:3521 cx16.r3 = &lbl47b lda #p8l_lbl47b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:3522 if x$0146 lda #<$0146 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3526 skip47b: p8l_skip47b ; source: test_word_lt.p8:3528 if x$0147 lda #<$0147 jsr p8b_main.p8s_fail_word label_asm_435_afterif ; source: test_word_lt.p8:3532 if x$0148 lda #<$0148 jsr p8b_main.p8s_fail_word bra label_asm_436_afterif label_asm_437_else ; source: test_word_lt.p8:3535 success++ inc p8b_main.p8v_success label_asm_436_afterif ; source: test_word_lt.p8:3537 values[1]=30464 ldy #2 lda #<$7700 sta p8v_values,y lda #>$7700 sta p8v_values+1,y ; source: test_word_lt.p8:3539 if x$0149 lda #<$0149 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3543 skip48a: p8l_skip48a ; source: test_word_lt.p8:3545 cx16.r3 = &lbl48b lda #p8l_lbl48b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:3546 if x$014a lda #<$014a jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3550 skip48b: p8l_skip48b ; source: test_word_lt.p8:3552 if x$014b lda #<$014b jsr p8b_main.p8s_fail_word label_asm_438_afterif ; source: test_word_lt.p8:3556 if x$014c lda #<$014c jsr p8b_main.p8s_fail_word bra label_asm_439_afterif label_asm_440_else ; source: test_word_lt.p8:3559 success++ inc p8b_main.p8v_success label_asm_439_afterif ; source: test_word_lt.p8:3561 values[1]=32767 ldy #2 lda #<$7fff sta p8v_values,y lda #>$7fff sta p8v_values+1,y ; source: test_word_lt.p8:3563 if x$014d lda #<$014d jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3567 skip49a: p8l_skip49a ; source: test_word_lt.p8:3569 cx16.r3 = &lbl49b lda #p8l_lbl49b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:3570 if x$014e lda #<$014e jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3574 skip49b: p8l_skip49b ; source: test_word_lt.p8:3576 if x$014f lda #<$014f jsr p8b_main.p8s_fail_word label_asm_441_afterif ; source: test_word_lt.p8:3580 if x$0150 lda #<$0150 jsr p8b_main.p8s_fail_word bra label_asm_442_afterif label_asm_443_else ; source: test_word_lt.p8:3583 success++ inc p8b_main.p8v_success label_asm_442_afterif ; source: test_word_lt.p8:3585 verify_success(112) lda #$70 jmp p8b_main.p8s_verify_success ; source: test_word_lt.p8:2398 sub test_cmp_array() { ; variables .section BSS .send BSS ; non-zeropage variables without initialization value .section BSS p8v_x .sint ? .send BSS ; non-zeropage variables p8v_values .sint $0000, $0000 .pend ; source: test_word_lt.p8:3587 sub test_cmp_expr() { p8s_test_cmp_expr .proc ; statements ; source: test_word_lt.p8:3588 word @shared x ; source: test_word_lt.p8:3591 float @shared f4 = 1.0 ; source: test_word_lt.p8:3592 float @shared f5 = 1.0 ; source: test_word_lt.p8:3588 word @shared x stz p8v_x stz p8v_x+1 ; source: test_word_lt.p8:3589 cx16.r4 = 1 lda #<1 ldy #>1 sta cx16.r4 sty cx16.r4+1 ; source: test_word_lt.p8:3590 cx16.r5 = 1 sta cx16.r5 sty cx16.r5+1 ; source: test_word_lt.p8:3591 float @shared f4 = 1.0 lda #prog8_float_const_0 sta P8ZP_SCRATCH_W1 sty P8ZP_SCRATCH_W1+1 lda #p8v_f4 jsr floats.copy_float ; source: test_word_lt.p8:3592 float @shared f5 = 1.0 lda #p8v_f5 jsr floats.copy_float ; source: test_word_lt.p8:3593 success = 0 stz p8b_main.p8v_success ; source: test_word_lt.p8:3594 x=-21829 lda #<-$5545 ldy #>-$5545 sta p8v_x sty p8v_x+1 ; source: test_word_lt.p8:3596 if x$5545 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bmi p8l_lbl1a ; source: test_word_lt.p8:3598 goto skip1a bra p8l_skip1a ; source: test_word_lt.p8:3599 lbl1a: fail_word(337) p8l_lbl1a ldy #>$0151 lda #<$0151 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3600 skip1a: p8l_skip1a ; source: test_word_lt.p8:3602 cx16.r3 = &lbl1b lda #p8l_lbl1b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:3603 if x$5545 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:3605 goto skip1b bra p8l_skip1b ; source: test_word_lt.p8:3606 lbl1b: fail_word(338) p8l_lbl1b ldy #>$0152 lda #<$0152 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3607 skip1b: p8l_skip1b ; source: test_word_lt.p8:3609 if x$5545 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_444_afterif ; source: test_word_lt.p8:3610 fail_word(339) ldy #>$0153 lda #<$0153 jsr p8b_main.p8s_fail_word label_asm_444_afterif ; source: test_word_lt.p8:3613 if x$5545 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_446_else ; source: test_word_lt.p8:3614 fail_word(340) ldy #>$0154 lda #<$0154 jsr p8b_main.p8s_fail_word bra label_asm_445_afterif label_asm_446_else ; source: test_word_lt.p8:3616 success++ inc p8b_main.p8v_success label_asm_445_afterif ; source: test_word_lt.p8:3619 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bmi p8l_lbl2a ; source: test_word_lt.p8:3621 goto skip2a bra p8l_skip2a ; source: test_word_lt.p8:3622 lbl2a: success++ p8l_lbl2a inc p8b_main.p8v_success ; source: test_word_lt.p8:3623 skip2a: p8l_skip2a ; source: test_word_lt.p8:3625 cx16.r3 = &lbl2b lda #p8l_lbl2b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:3626 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:3628 goto skip2b bra p8l_skip2b ; source: test_word_lt.p8:3629 lbl2b: success++ p8l_lbl2b inc p8b_main.p8v_success ; source: test_word_lt.p8:3630 skip2b: p8l_skip2b ; source: test_word_lt.p8:3632 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_447_afterif ; source: test_word_lt.p8:3633 success++ inc p8b_main.p8v_success label_asm_447_afterif ; source: test_word_lt.p8:3636 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_449_else ; source: test_word_lt.p8:3637 success++ inc p8b_main.p8v_success bra label_asm_448_afterif label_asm_449_else ; source: test_word_lt.p8:3639 cx16.r0L++ inc cx16.r0L label_asm_448_afterif ; source: test_word_lt.p8:3642 if xp8l_lbl3b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:3649 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bmi p8l_lbl4a ; source: test_word_lt.p8:3667 goto skip4a bra p8l_skip4a ; source: test_word_lt.p8:3668 lbl4a: success++ p8l_lbl4a inc p8b_main.p8v_success ; source: test_word_lt.p8:3669 skip4a: p8l_skip4a ; source: test_word_lt.p8:3671 cx16.r3 = &lbl4b lda #p8l_lbl4b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:3672 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:3674 goto skip4b bra p8l_skip4b ; source: test_word_lt.p8:3675 lbl4b: success++ p8l_lbl4b inc p8b_main.p8v_success ; source: test_word_lt.p8:3676 skip4b: p8l_skip4b ; source: test_word_lt.p8:3678 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_453_afterif ; source: test_word_lt.p8:3679 success++ inc p8b_main.p8v_success label_asm_453_afterif ; source: test_word_lt.p8:3682 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_455_else ; source: test_word_lt.p8:3683 success++ inc p8b_main.p8v_success bra label_asm_454_afterif label_asm_455_else ; source: test_word_lt.p8:3685 cx16.r0L++ inc cx16.r0L label_asm_454_afterif ; source: test_word_lt.p8:3688 if x$aa tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bmi p8l_lbl5a ; source: test_word_lt.p8:3690 goto skip5a bra p8l_skip5a ; source: test_word_lt.p8:3691 lbl5a: success++ p8l_lbl5a inc p8b_main.p8v_success ; source: test_word_lt.p8:3692 skip5a: p8l_skip5a ; source: test_word_lt.p8:3694 cx16.r3 = &lbl5b lda #p8l_lbl5b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:3695 if x$aa tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:3697 goto skip5b bra p8l_skip5b ; source: test_word_lt.p8:3698 lbl5b: success++ p8l_lbl5b inc p8b_main.p8v_success ; source: test_word_lt.p8:3699 skip5b: p8l_skip5b ; source: test_word_lt.p8:3701 if x$aa tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_456_afterif ; source: test_word_lt.p8:3702 success++ inc p8b_main.p8v_success label_asm_456_afterif ; source: test_word_lt.p8:3705 if x$aa tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_458_else ; source: test_word_lt.p8:3706 success++ inc p8b_main.p8v_success bra label_asm_457_afterif label_asm_458_else ; source: test_word_lt.p8:3708 cx16.r0L++ inc cx16.r0L label_asm_457_afterif ; source: test_word_lt.p8:3711 if x$7700 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bmi p8l_lbl6a ; source: test_word_lt.p8:3713 goto skip6a bra p8l_skip6a ; source: test_word_lt.p8:3714 lbl6a: success++ p8l_lbl6a inc p8b_main.p8v_success ; source: test_word_lt.p8:3715 skip6a: p8l_skip6a ; source: test_word_lt.p8:3717 cx16.r3 = &lbl6b lda #p8l_lbl6b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:3718 if x$7700 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:3720 goto skip6b bra p8l_skip6b ; source: test_word_lt.p8:3721 lbl6b: success++ p8l_lbl6b inc p8b_main.p8v_success ; source: test_word_lt.p8:3722 skip6b: p8l_skip6b ; source: test_word_lt.p8:3724 if x$7700 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_459_afterif ; source: test_word_lt.p8:3725 success++ inc p8b_main.p8v_success label_asm_459_afterif ; source: test_word_lt.p8:3728 if x$7700 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_461_else ; source: test_word_lt.p8:3729 success++ inc p8b_main.p8v_success bra label_asm_460_afterif label_asm_461_else ; source: test_word_lt.p8:3731 cx16.r0L++ inc cx16.r0L label_asm_460_afterif ; source: test_word_lt.p8:3734 if x$7fff tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bmi p8l_lbl7a ; source: test_word_lt.p8:3736 goto skip7a bra p8l_skip7a ; source: test_word_lt.p8:3737 lbl7a: success++ p8l_lbl7a inc p8b_main.p8v_success ; source: test_word_lt.p8:3738 skip7a: p8l_skip7a ; source: test_word_lt.p8:3740 cx16.r3 = &lbl7b lda #p8l_lbl7b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:3741 if x$7fff tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:3743 goto skip7b bra p8l_skip7b ; source: test_word_lt.p8:3744 lbl7b: success++ p8l_lbl7b inc p8b_main.p8v_success ; source: test_word_lt.p8:3745 skip7b: p8l_skip7b ; source: test_word_lt.p8:3747 if x$7fff tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_462_afterif ; source: test_word_lt.p8:3748 success++ inc p8b_main.p8v_success label_asm_462_afterif ; source: test_word_lt.p8:3751 if x$7fff tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_464_else ; source: test_word_lt.p8:3752 success++ inc p8b_main.p8v_success bra label_asm_463_afterif label_asm_464_else ; source: test_word_lt.p8:3754 cx16.r0L++ inc cx16.r0L label_asm_463_afterif ; source: test_word_lt.p8:3756 x=-1 lda #<-1 ldy #>-1 sta p8v_x sty p8v_x+1 ; source: test_word_lt.p8:3758 if x$5545 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bmi p8l_lbl8a ; source: test_word_lt.p8:3760 goto skip8a bra p8l_skip8a ; source: test_word_lt.p8:3761 lbl8a: fail_word(341) p8l_lbl8a ldy #>$0155 lda #<$0155 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3762 skip8a: p8l_skip8a ; source: test_word_lt.p8:3764 cx16.r3 = &lbl8b lda #p8l_lbl8b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:3765 if x$5545 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:3767 goto skip8b bra p8l_skip8b ; source: test_word_lt.p8:3768 lbl8b: fail_word(342) p8l_lbl8b ldy #>$0156 lda #<$0156 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3769 skip8b: p8l_skip8b ; source: test_word_lt.p8:3771 if x$5545 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_465_afterif ; source: test_word_lt.p8:3772 fail_word(343) ldy #>$0157 lda #<$0157 jsr p8b_main.p8s_fail_word label_asm_465_afterif ; source: test_word_lt.p8:3775 if x$5545 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_467_else ; source: test_word_lt.p8:3776 fail_word(344) ldy #>$0158 lda #<$0158 jsr p8b_main.p8s_fail_word bra label_asm_466_afterif label_asm_467_else ; source: test_word_lt.p8:3778 success++ inc p8b_main.p8v_success label_asm_466_afterif ; source: test_word_lt.p8:3781 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bmi p8l_lbl9a ; source: test_word_lt.p8:3783 goto skip9a bra p8l_skip9a ; source: test_word_lt.p8:3784 lbl9a: fail_word(345) p8l_lbl9a ldy #>$0159 lda #<$0159 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3785 skip9a: p8l_skip9a ; source: test_word_lt.p8:3787 cx16.r3 = &lbl9b lda #p8l_lbl9b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:3788 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:3790 goto skip9b bra p8l_skip9b ; source: test_word_lt.p8:3791 lbl9b: fail_word(346) p8l_lbl9b ldy #>$015a lda #<$015a jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3792 skip9b: p8l_skip9b ; source: test_word_lt.p8:3794 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_468_afterif ; source: test_word_lt.p8:3795 fail_word(347) ldy #>$015b lda #<$015b jsr p8b_main.p8s_fail_word label_asm_468_afterif ; source: test_word_lt.p8:3798 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_470_else ; source: test_word_lt.p8:3799 fail_word(348) ldy #>$015c lda #<$015c jsr p8b_main.p8s_fail_word bra label_asm_469_afterif label_asm_470_else ; source: test_word_lt.p8:3801 success++ inc p8b_main.p8v_success label_asm_469_afterif ; source: test_word_lt.p8:3804 if xp8l_lbl10b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:3811 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bmi p8l_lbl11a ; source: test_word_lt.p8:3829 goto skip11a bra p8l_skip11a ; source: test_word_lt.p8:3830 lbl11a: success++ p8l_lbl11a inc p8b_main.p8v_success ; source: test_word_lt.p8:3831 skip11a: p8l_skip11a ; source: test_word_lt.p8:3833 cx16.r3 = &lbl11b lda #p8l_lbl11b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:3834 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:3836 goto skip11b bra p8l_skip11b ; source: test_word_lt.p8:3837 lbl11b: success++ p8l_lbl11b inc p8b_main.p8v_success ; source: test_word_lt.p8:3838 skip11b: p8l_skip11b ; source: test_word_lt.p8:3840 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_474_afterif ; source: test_word_lt.p8:3841 success++ inc p8b_main.p8v_success label_asm_474_afterif ; source: test_word_lt.p8:3844 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_476_else ; source: test_word_lt.p8:3845 success++ inc p8b_main.p8v_success bra label_asm_475_afterif label_asm_476_else ; source: test_word_lt.p8:3847 cx16.r0L++ inc cx16.r0L label_asm_475_afterif ; source: test_word_lt.p8:3850 if x$aa tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bmi p8l_lbl12a ; source: test_word_lt.p8:3852 goto skip12a bra p8l_skip12a ; source: test_word_lt.p8:3853 lbl12a: success++ p8l_lbl12a inc p8b_main.p8v_success ; source: test_word_lt.p8:3854 skip12a: p8l_skip12a ; source: test_word_lt.p8:3856 cx16.r3 = &lbl12b lda #p8l_lbl12b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:3857 if x$aa tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:3859 goto skip12b bra p8l_skip12b ; source: test_word_lt.p8:3860 lbl12b: success++ p8l_lbl12b inc p8b_main.p8v_success ; source: test_word_lt.p8:3861 skip12b: p8l_skip12b ; source: test_word_lt.p8:3863 if x$aa tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_477_afterif ; source: test_word_lt.p8:3864 success++ inc p8b_main.p8v_success label_asm_477_afterif ; source: test_word_lt.p8:3867 if x$aa tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_479_else ; source: test_word_lt.p8:3868 success++ inc p8b_main.p8v_success bra label_asm_478_afterif label_asm_479_else ; source: test_word_lt.p8:3870 cx16.r0L++ inc cx16.r0L label_asm_478_afterif ; source: test_word_lt.p8:3873 if x$7700 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bmi p8l_lbl13a ; source: test_word_lt.p8:3875 goto skip13a bra p8l_skip13a ; source: test_word_lt.p8:3876 lbl13a: success++ p8l_lbl13a inc p8b_main.p8v_success ; source: test_word_lt.p8:3877 skip13a: p8l_skip13a ; source: test_word_lt.p8:3879 cx16.r3 = &lbl13b lda #p8l_lbl13b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:3880 if x$7700 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:3882 goto skip13b bra p8l_skip13b ; source: test_word_lt.p8:3883 lbl13b: success++ p8l_lbl13b inc p8b_main.p8v_success ; source: test_word_lt.p8:3884 skip13b: p8l_skip13b ; source: test_word_lt.p8:3886 if x$7700 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_480_afterif ; source: test_word_lt.p8:3887 success++ inc p8b_main.p8v_success label_asm_480_afterif ; source: test_word_lt.p8:3890 if x$7700 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_482_else ; source: test_word_lt.p8:3891 success++ inc p8b_main.p8v_success bra label_asm_481_afterif label_asm_482_else ; source: test_word_lt.p8:3893 cx16.r0L++ inc cx16.r0L label_asm_481_afterif ; source: test_word_lt.p8:3896 if x$7fff tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bmi p8l_lbl14a ; source: test_word_lt.p8:3898 goto skip14a bra p8l_skip14a ; source: test_word_lt.p8:3899 lbl14a: success++ p8l_lbl14a inc p8b_main.p8v_success ; source: test_word_lt.p8:3900 skip14a: p8l_skip14a ; source: test_word_lt.p8:3902 cx16.r3 = &lbl14b lda #p8l_lbl14b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:3903 if x$7fff tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:3905 goto skip14b bra p8l_skip14b ; source: test_word_lt.p8:3906 lbl14b: success++ p8l_lbl14b inc p8b_main.p8v_success ; source: test_word_lt.p8:3907 skip14b: p8l_skip14b ; source: test_word_lt.p8:3909 if x$7fff tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_483_afterif ; source: test_word_lt.p8:3910 success++ inc p8b_main.p8v_success label_asm_483_afterif ; source: test_word_lt.p8:3913 if x$7fff tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_485_else ; source: test_word_lt.p8:3914 success++ inc p8b_main.p8v_success bra label_asm_484_afterif label_asm_485_else ; source: test_word_lt.p8:3916 cx16.r0L++ inc cx16.r0L label_asm_484_afterif ; source: test_word_lt.p8:3918 x=0 stz p8v_x stz p8v_x+1 ; source: test_word_lt.p8:3920 if x$5545 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bmi p8l_lbl15a ; source: test_word_lt.p8:3922 goto skip15a bra p8l_skip15a ; source: test_word_lt.p8:3923 lbl15a: fail_word(349) p8l_lbl15a ldy #>$015d lda #<$015d jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3924 skip15a: p8l_skip15a ; source: test_word_lt.p8:3926 cx16.r3 = &lbl15b lda #p8l_lbl15b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:3927 if x$5545 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:3929 goto skip15b bra p8l_skip15b ; source: test_word_lt.p8:3930 lbl15b: fail_word(350) p8l_lbl15b ldy #>$015e lda #<$015e jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3931 skip15b: p8l_skip15b ; source: test_word_lt.p8:3933 if x$5545 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_486_afterif ; source: test_word_lt.p8:3934 fail_word(351) ldy #>$015f lda #<$015f jsr p8b_main.p8s_fail_word label_asm_486_afterif ; source: test_word_lt.p8:3937 if x$5545 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_488_else ; source: test_word_lt.p8:3938 fail_word(352) ldy #>$0160 lda #<$0160 jsr p8b_main.p8s_fail_word bra label_asm_487_afterif label_asm_488_else ; source: test_word_lt.p8:3940 success++ inc p8b_main.p8v_success label_asm_487_afterif ; source: test_word_lt.p8:3943 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bmi p8l_lbl16a ; source: test_word_lt.p8:3945 goto skip16a bra p8l_skip16a ; source: test_word_lt.p8:3946 lbl16a: fail_word(353) p8l_lbl16a ldy #>$0161 lda #<$0161 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3947 skip16a: p8l_skip16a ; source: test_word_lt.p8:3949 cx16.r3 = &lbl16b lda #p8l_lbl16b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:3950 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:3952 goto skip16b bra p8l_skip16b ; source: test_word_lt.p8:3953 lbl16b: fail_word(354) p8l_lbl16b ldy #>$0162 lda #<$0162 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3954 skip16b: p8l_skip16b ; source: test_word_lt.p8:3956 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_489_afterif ; source: test_word_lt.p8:3957 fail_word(355) ldy #>$0163 lda #<$0163 jsr p8b_main.p8s_fail_word label_asm_489_afterif ; source: test_word_lt.p8:3960 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_491_else ; source: test_word_lt.p8:3961 fail_word(356) ldy #>$0164 lda #<$0164 jsr p8b_main.p8s_fail_word bra label_asm_490_afterif label_asm_491_else ; source: test_word_lt.p8:3963 success++ inc p8b_main.p8v_success label_asm_490_afterif ; source: test_word_lt.p8:3966 if x$0165 lda #<$0165 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3970 skip17a: p8l_skip17a ; source: test_word_lt.p8:3972 cx16.r3 = &lbl17b lda #p8l_lbl17b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:3973 if x$0166 lda #<$0166 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:3977 skip17b: p8l_skip17b ; source: test_word_lt.p8:3979 if x$0167 lda #<$0167 jsr p8b_main.p8s_fail_word label_asm_492_afterif ; source: test_word_lt.p8:3983 if x$0168 lda #<$0168 jsr p8b_main.p8s_fail_word bra label_asm_493_afterif label_asm_494_else ; source: test_word_lt.p8:3986 success++ inc p8b_main.p8v_success label_asm_493_afterif ; source: test_word_lt.p8:3989 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bmi p8l_lbl18a ; source: test_word_lt.p8:3991 goto skip18a bra p8l_skip18a ; source: test_word_lt.p8:3992 lbl18a: success++ p8l_lbl18a inc p8b_main.p8v_success ; source: test_word_lt.p8:3993 skip18a: p8l_skip18a ; source: test_word_lt.p8:3995 cx16.r3 = &lbl18b lda #p8l_lbl18b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:3996 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:3998 goto skip18b bra p8l_skip18b ; source: test_word_lt.p8:3999 lbl18b: success++ p8l_lbl18b inc p8b_main.p8v_success ; source: test_word_lt.p8:4000 skip18b: p8l_skip18b ; source: test_word_lt.p8:4002 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_495_afterif ; source: test_word_lt.p8:4003 success++ inc p8b_main.p8v_success label_asm_495_afterif ; source: test_word_lt.p8:4006 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_497_else ; source: test_word_lt.p8:4007 success++ inc p8b_main.p8v_success bra label_asm_496_afterif label_asm_497_else ; source: test_word_lt.p8:4009 cx16.r0L++ inc cx16.r0L label_asm_496_afterif ; source: test_word_lt.p8:4012 if x$aa tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bmi p8l_lbl19a ; source: test_word_lt.p8:4014 goto skip19a bra p8l_skip19a ; source: test_word_lt.p8:4015 lbl19a: success++ p8l_lbl19a inc p8b_main.p8v_success ; source: test_word_lt.p8:4016 skip19a: p8l_skip19a ; source: test_word_lt.p8:4018 cx16.r3 = &lbl19b lda #p8l_lbl19b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:4019 if x$aa tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:4021 goto skip19b bra p8l_skip19b ; source: test_word_lt.p8:4022 lbl19b: success++ p8l_lbl19b inc p8b_main.p8v_success ; source: test_word_lt.p8:4023 skip19b: p8l_skip19b ; source: test_word_lt.p8:4025 if x$aa tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_498_afterif ; source: test_word_lt.p8:4026 success++ inc p8b_main.p8v_success label_asm_498_afterif ; source: test_word_lt.p8:4029 if x$aa tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_500_else ; source: test_word_lt.p8:4030 success++ inc p8b_main.p8v_success bra label_asm_499_afterif label_asm_500_else ; source: test_word_lt.p8:4032 cx16.r0L++ inc cx16.r0L label_asm_499_afterif ; source: test_word_lt.p8:4035 if x$7700 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bmi p8l_lbl20a ; source: test_word_lt.p8:4037 goto skip20a bra p8l_skip20a ; source: test_word_lt.p8:4038 lbl20a: success++ p8l_lbl20a inc p8b_main.p8v_success ; source: test_word_lt.p8:4039 skip20a: p8l_skip20a ; source: test_word_lt.p8:4041 cx16.r3 = &lbl20b lda #p8l_lbl20b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:4042 if x$7700 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:4044 goto skip20b bra p8l_skip20b ; source: test_word_lt.p8:4045 lbl20b: success++ p8l_lbl20b inc p8b_main.p8v_success ; source: test_word_lt.p8:4046 skip20b: p8l_skip20b ; source: test_word_lt.p8:4048 if x$7700 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_501_afterif ; source: test_word_lt.p8:4049 success++ inc p8b_main.p8v_success label_asm_501_afterif ; source: test_word_lt.p8:4052 if x$7700 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_503_else ; source: test_word_lt.p8:4053 success++ inc p8b_main.p8v_success bra label_asm_502_afterif label_asm_503_else ; source: test_word_lt.p8:4055 cx16.r0L++ inc cx16.r0L label_asm_502_afterif ; source: test_word_lt.p8:4058 if x$7fff tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bmi p8l_lbl21a ; source: test_word_lt.p8:4060 goto skip21a bra p8l_skip21a ; source: test_word_lt.p8:4061 lbl21a: success++ p8l_lbl21a inc p8b_main.p8v_success ; source: test_word_lt.p8:4062 skip21a: p8l_skip21a ; source: test_word_lt.p8:4064 cx16.r3 = &lbl21b lda #p8l_lbl21b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:4065 if x$7fff tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:4067 goto skip21b bra p8l_skip21b ; source: test_word_lt.p8:4068 lbl21b: success++ p8l_lbl21b inc p8b_main.p8v_success ; source: test_word_lt.p8:4069 skip21b: p8l_skip21b ; source: test_word_lt.p8:4071 if x$7fff tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_504_afterif ; source: test_word_lt.p8:4072 success++ inc p8b_main.p8v_success label_asm_504_afterif ; source: test_word_lt.p8:4075 if x$7fff tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_506_else ; source: test_word_lt.p8:4076 success++ inc p8b_main.p8v_success bra label_asm_505_afterif label_asm_506_else ; source: test_word_lt.p8:4078 cx16.r0L++ inc cx16.r0L label_asm_505_afterif ; source: test_word_lt.p8:4080 x=1 lda #<1 ldy #>1 sta p8v_x sty p8v_x+1 ; source: test_word_lt.p8:4082 if x$5545 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bmi p8l_lbl22a ; source: test_word_lt.p8:4084 goto skip22a bra p8l_skip22a ; source: test_word_lt.p8:4085 lbl22a: fail_word(361) p8l_lbl22a ldy #>$0169 lda #<$0169 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:4086 skip22a: p8l_skip22a ; source: test_word_lt.p8:4088 cx16.r3 = &lbl22b lda #p8l_lbl22b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:4089 if x$5545 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:4091 goto skip22b bra p8l_skip22b ; source: test_word_lt.p8:4092 lbl22b: fail_word(362) p8l_lbl22b ldy #>$016a lda #<$016a jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:4093 skip22b: p8l_skip22b ; source: test_word_lt.p8:4095 if x$5545 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_507_afterif ; source: test_word_lt.p8:4096 fail_word(363) ldy #>$016b lda #<$016b jsr p8b_main.p8s_fail_word label_asm_507_afterif ; source: test_word_lt.p8:4099 if x$5545 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_509_else ; source: test_word_lt.p8:4100 fail_word(364) ldy #>$016c lda #<$016c jsr p8b_main.p8s_fail_word bra label_asm_508_afterif label_asm_509_else ; source: test_word_lt.p8:4102 success++ inc p8b_main.p8v_success label_asm_508_afterif ; source: test_word_lt.p8:4105 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bmi p8l_lbl23a ; source: test_word_lt.p8:4107 goto skip23a bra p8l_skip23a ; source: test_word_lt.p8:4108 lbl23a: fail_word(365) p8l_lbl23a ldy #>$016d lda #<$016d jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:4109 skip23a: p8l_skip23a ; source: test_word_lt.p8:4111 cx16.r3 = &lbl23b lda #p8l_lbl23b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:4112 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:4114 goto skip23b bra p8l_skip23b ; source: test_word_lt.p8:4115 lbl23b: fail_word(366) p8l_lbl23b ldy #>$016e lda #<$016e jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:4116 skip23b: p8l_skip23b ; source: test_word_lt.p8:4118 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_510_afterif ; source: test_word_lt.p8:4119 fail_word(367) ldy #>$016f lda #<$016f jsr p8b_main.p8s_fail_word label_asm_510_afterif ; source: test_word_lt.p8:4122 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_512_else ; source: test_word_lt.p8:4123 fail_word(368) ldy #>$0170 lda #<$0170 jsr p8b_main.p8s_fail_word bra label_asm_511_afterif label_asm_512_else ; source: test_word_lt.p8:4125 success++ inc p8b_main.p8v_success label_asm_511_afterif ; source: test_word_lt.p8:4128 if x$0171 lda #<$0171 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:4132 skip24a: p8l_skip24a ; source: test_word_lt.p8:4134 cx16.r3 = &lbl24b lda #p8l_lbl24b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:4135 if x$0172 lda #<$0172 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:4139 skip24b: p8l_skip24b ; source: test_word_lt.p8:4141 if x$0173 lda #<$0173 jsr p8b_main.p8s_fail_word label_asm_513_afterif ; source: test_word_lt.p8:4145 if x$0174 lda #<$0174 jsr p8b_main.p8s_fail_word bra label_asm_514_afterif label_asm_515_else ; source: test_word_lt.p8:4148 success++ inc p8b_main.p8v_success label_asm_514_afterif ; source: test_word_lt.p8:4151 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bmi p8l_lbl25a ; source: test_word_lt.p8:4153 goto skip25a bra p8l_skip25a ; source: test_word_lt.p8:4154 lbl25a: fail_word(373) p8l_lbl25a ldy #>$0175 lda #<$0175 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:4155 skip25a: p8l_skip25a ; source: test_word_lt.p8:4157 cx16.r3 = &lbl25b lda #p8l_lbl25b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:4158 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:4160 goto skip25b bra p8l_skip25b ; source: test_word_lt.p8:4161 lbl25b: fail_word(374) p8l_lbl25b ldy #>$0176 lda #<$0176 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:4162 skip25b: p8l_skip25b ; source: test_word_lt.p8:4164 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_516_afterif ; source: test_word_lt.p8:4165 fail_word(375) ldy #>$0177 lda #<$0177 jsr p8b_main.p8s_fail_word label_asm_516_afterif ; source: test_word_lt.p8:4168 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_518_else ; source: test_word_lt.p8:4169 fail_word(376) ldy #>$0178 lda #<$0178 jsr p8b_main.p8s_fail_word bra label_asm_517_afterif label_asm_518_else ; source: test_word_lt.p8:4171 success++ inc p8b_main.p8v_success label_asm_517_afterif ; source: test_word_lt.p8:4174 if x$aa tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bmi p8l_lbl26a ; source: test_word_lt.p8:4176 goto skip26a bra p8l_skip26a ; source: test_word_lt.p8:4177 lbl26a: success++ p8l_lbl26a inc p8b_main.p8v_success ; source: test_word_lt.p8:4178 skip26a: p8l_skip26a ; source: test_word_lt.p8:4180 cx16.r3 = &lbl26b lda #p8l_lbl26b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:4181 if x$aa tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:4183 goto skip26b bra p8l_skip26b ; source: test_word_lt.p8:4184 lbl26b: success++ p8l_lbl26b inc p8b_main.p8v_success ; source: test_word_lt.p8:4185 skip26b: p8l_skip26b ; source: test_word_lt.p8:4187 if x$aa tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_519_afterif ; source: test_word_lt.p8:4188 success++ inc p8b_main.p8v_success label_asm_519_afterif ; source: test_word_lt.p8:4191 if x$aa tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_521_else ; source: test_word_lt.p8:4192 success++ inc p8b_main.p8v_success bra label_asm_520_afterif label_asm_521_else ; source: test_word_lt.p8:4194 cx16.r0L++ inc cx16.r0L label_asm_520_afterif ; source: test_word_lt.p8:4197 if x$7700 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bmi p8l_lbl27a ; source: test_word_lt.p8:4199 goto skip27a bra p8l_skip27a ; source: test_word_lt.p8:4200 lbl27a: success++ p8l_lbl27a inc p8b_main.p8v_success ; source: test_word_lt.p8:4201 skip27a: p8l_skip27a ; source: test_word_lt.p8:4203 cx16.r3 = &lbl27b lda #p8l_lbl27b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:4204 if x$7700 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:4206 goto skip27b bra p8l_skip27b ; source: test_word_lt.p8:4207 lbl27b: success++ p8l_lbl27b inc p8b_main.p8v_success ; source: test_word_lt.p8:4208 skip27b: p8l_skip27b ; source: test_word_lt.p8:4210 if x$7700 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_522_afterif ; source: test_word_lt.p8:4211 success++ inc p8b_main.p8v_success label_asm_522_afterif ; source: test_word_lt.p8:4214 if x$7700 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_524_else ; source: test_word_lt.p8:4215 success++ inc p8b_main.p8v_success bra label_asm_523_afterif label_asm_524_else ; source: test_word_lt.p8:4217 cx16.r0L++ inc cx16.r0L label_asm_523_afterif ; source: test_word_lt.p8:4220 if x$7fff tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bmi p8l_lbl28a ; source: test_word_lt.p8:4222 goto skip28a bra p8l_skip28a ; source: test_word_lt.p8:4223 lbl28a: success++ p8l_lbl28a inc p8b_main.p8v_success ; source: test_word_lt.p8:4224 skip28a: p8l_skip28a ; source: test_word_lt.p8:4226 cx16.r3 = &lbl28b lda #p8l_lbl28b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:4227 if x$7fff tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:4229 goto skip28b bra p8l_skip28b ; source: test_word_lt.p8:4230 lbl28b: success++ p8l_lbl28b inc p8b_main.p8v_success ; source: test_word_lt.p8:4231 skip28b: p8l_skip28b ; source: test_word_lt.p8:4233 if x$7fff tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_525_afterif ; source: test_word_lt.p8:4234 success++ inc p8b_main.p8v_success label_asm_525_afterif ; source: test_word_lt.p8:4237 if x$7fff tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_527_else ; source: test_word_lt.p8:4238 success++ inc p8b_main.p8v_success bra label_asm_526_afterif label_asm_527_else ; source: test_word_lt.p8:4240 cx16.r0L++ inc cx16.r0L label_asm_526_afterif ; source: test_word_lt.p8:4242 x=170 lda #<$aa ldy #>$aa sta p8v_x sty p8v_x+1 ; source: test_word_lt.p8:4244 if x$5545 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bmi p8l_lbl29a ; source: test_word_lt.p8:4246 goto skip29a bra p8l_skip29a ; source: test_word_lt.p8:4247 lbl29a: fail_word(377) p8l_lbl29a ldy #>$0179 lda #<$0179 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:4248 skip29a: p8l_skip29a ; source: test_word_lt.p8:4250 cx16.r3 = &lbl29b lda #p8l_lbl29b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:4251 if x$5545 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:4253 goto skip29b bra p8l_skip29b ; source: test_word_lt.p8:4254 lbl29b: fail_word(378) p8l_lbl29b ldy #>$017a lda #<$017a jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:4255 skip29b: p8l_skip29b ; source: test_word_lt.p8:4257 if x$5545 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_528_afterif ; source: test_word_lt.p8:4258 fail_word(379) ldy #>$017b lda #<$017b jsr p8b_main.p8s_fail_word label_asm_528_afterif ; source: test_word_lt.p8:4261 if x$5545 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_530_else ; source: test_word_lt.p8:4262 fail_word(380) ldy #>$017c lda #<$017c jsr p8b_main.p8s_fail_word bra label_asm_529_afterif label_asm_530_else ; source: test_word_lt.p8:4264 success++ inc p8b_main.p8v_success label_asm_529_afterif ; source: test_word_lt.p8:4267 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bmi p8l_lbl30a ; source: test_word_lt.p8:4269 goto skip30a bra p8l_skip30a ; source: test_word_lt.p8:4270 lbl30a: fail_word(381) p8l_lbl30a ldy #>$017d lda #<$017d jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:4271 skip30a: p8l_skip30a ; source: test_word_lt.p8:4273 cx16.r3 = &lbl30b lda #p8l_lbl30b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:4274 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:4276 goto skip30b bra p8l_skip30b ; source: test_word_lt.p8:4277 lbl30b: fail_word(382) p8l_lbl30b ldy #>$017e lda #<$017e jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:4278 skip30b: p8l_skip30b ; source: test_word_lt.p8:4280 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_531_afterif ; source: test_word_lt.p8:4281 fail_word(383) ldy #>$017f lda #<$017f jsr p8b_main.p8s_fail_word label_asm_531_afterif ; source: test_word_lt.p8:4284 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_533_else ; source: test_word_lt.p8:4285 fail_word(384) ldy #>$0180 lda #<$0180 jsr p8b_main.p8s_fail_word bra label_asm_532_afterif label_asm_533_else ; source: test_word_lt.p8:4287 success++ inc p8b_main.p8v_success label_asm_532_afterif ; source: test_word_lt.p8:4290 if x$0181 lda #<$0181 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:4294 skip31a: p8l_skip31a ; source: test_word_lt.p8:4296 cx16.r3 = &lbl31b lda #p8l_lbl31b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:4297 if x$0182 lda #<$0182 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:4301 skip31b: p8l_skip31b ; source: test_word_lt.p8:4303 if x$0183 lda #<$0183 jsr p8b_main.p8s_fail_word label_asm_534_afterif ; source: test_word_lt.p8:4307 if x$0184 lda #<$0184 jsr p8b_main.p8s_fail_word bra label_asm_535_afterif label_asm_536_else ; source: test_word_lt.p8:4310 success++ inc p8b_main.p8v_success label_asm_535_afterif ; source: test_word_lt.p8:4313 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bmi p8l_lbl32a ; source: test_word_lt.p8:4315 goto skip32a bra p8l_skip32a ; source: test_word_lt.p8:4316 lbl32a: fail_word(389) p8l_lbl32a ldy #>$0185 lda #<$0185 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:4317 skip32a: p8l_skip32a ; source: test_word_lt.p8:4319 cx16.r3 = &lbl32b lda #p8l_lbl32b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:4320 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:4322 goto skip32b bra p8l_skip32b ; source: test_word_lt.p8:4323 lbl32b: fail_word(390) p8l_lbl32b ldy #>$0186 lda #<$0186 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:4324 skip32b: p8l_skip32b ; source: test_word_lt.p8:4326 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_537_afterif ; source: test_word_lt.p8:4327 fail_word(391) ldy #>$0187 lda #<$0187 jsr p8b_main.p8s_fail_word label_asm_537_afterif ; source: test_word_lt.p8:4330 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_539_else ; source: test_word_lt.p8:4331 fail_word(392) ldy #>$0188 lda #<$0188 jsr p8b_main.p8s_fail_word bra label_asm_538_afterif label_asm_539_else ; source: test_word_lt.p8:4333 success++ inc p8b_main.p8v_success label_asm_538_afterif ; source: test_word_lt.p8:4336 if x$aa tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bmi p8l_lbl33a ; source: test_word_lt.p8:4338 goto skip33a bra p8l_skip33a ; source: test_word_lt.p8:4339 lbl33a: fail_word(393) p8l_lbl33a ldy #>$0189 lda #<$0189 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:4340 skip33a: p8l_skip33a ; source: test_word_lt.p8:4342 cx16.r3 = &lbl33b lda #p8l_lbl33b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:4343 if x$aa tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:4345 goto skip33b bra p8l_skip33b ; source: test_word_lt.p8:4346 lbl33b: fail_word(394) p8l_lbl33b ldy #>$018a lda #<$018a jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:4347 skip33b: p8l_skip33b ; source: test_word_lt.p8:4349 if x$aa tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_540_afterif ; source: test_word_lt.p8:4350 fail_word(395) ldy #>$018b lda #<$018b jsr p8b_main.p8s_fail_word label_asm_540_afterif ; source: test_word_lt.p8:4353 if x$aa tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_542_else ; source: test_word_lt.p8:4354 fail_word(396) ldy #>$018c lda #<$018c jsr p8b_main.p8s_fail_word bra label_asm_541_afterif label_asm_542_else ; source: test_word_lt.p8:4356 success++ inc p8b_main.p8v_success label_asm_541_afterif ; source: test_word_lt.p8:4359 if x$7700 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bmi p8l_lbl34a ; source: test_word_lt.p8:4361 goto skip34a bra p8l_skip34a ; source: test_word_lt.p8:4362 lbl34a: success++ p8l_lbl34a inc p8b_main.p8v_success ; source: test_word_lt.p8:4363 skip34a: p8l_skip34a ; source: test_word_lt.p8:4365 cx16.r3 = &lbl34b lda #p8l_lbl34b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:4366 if x$7700 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:4368 goto skip34b bra p8l_skip34b ; source: test_word_lt.p8:4369 lbl34b: success++ p8l_lbl34b inc p8b_main.p8v_success ; source: test_word_lt.p8:4370 skip34b: p8l_skip34b ; source: test_word_lt.p8:4372 if x$7700 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_543_afterif ; source: test_word_lt.p8:4373 success++ inc p8b_main.p8v_success label_asm_543_afterif ; source: test_word_lt.p8:4376 if x$7700 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_545_else ; source: test_word_lt.p8:4377 success++ inc p8b_main.p8v_success bra label_asm_544_afterif label_asm_545_else ; source: test_word_lt.p8:4379 cx16.r0L++ inc cx16.r0L label_asm_544_afterif ; source: test_word_lt.p8:4382 if x$7fff tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bmi p8l_lbl35a ; source: test_word_lt.p8:4384 goto skip35a bra p8l_skip35a ; source: test_word_lt.p8:4385 lbl35a: success++ p8l_lbl35a inc p8b_main.p8v_success ; source: test_word_lt.p8:4386 skip35a: p8l_skip35a ; source: test_word_lt.p8:4388 cx16.r3 = &lbl35b lda #p8l_lbl35b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:4389 if x$7fff tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:4391 goto skip35b bra p8l_skip35b ; source: test_word_lt.p8:4392 lbl35b: success++ p8l_lbl35b inc p8b_main.p8v_success ; source: test_word_lt.p8:4393 skip35b: p8l_skip35b ; source: test_word_lt.p8:4395 if x$7fff tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_546_afterif ; source: test_word_lt.p8:4396 success++ inc p8b_main.p8v_success label_asm_546_afterif ; source: test_word_lt.p8:4399 if x$7fff tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_548_else ; source: test_word_lt.p8:4400 success++ inc p8b_main.p8v_success bra label_asm_547_afterif label_asm_548_else ; source: test_word_lt.p8:4402 cx16.r0L++ inc cx16.r0L label_asm_547_afterif ; source: test_word_lt.p8:4404 x=30464 lda #<$7700 ldy #>$7700 sta p8v_x sty p8v_x+1 ; source: test_word_lt.p8:4406 if x$5545 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bmi p8l_lbl36a ; source: test_word_lt.p8:4408 goto skip36a bra p8l_skip36a ; source: test_word_lt.p8:4409 lbl36a: fail_word(397) p8l_lbl36a ldy #>$018d lda #<$018d jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:4410 skip36a: p8l_skip36a ; source: test_word_lt.p8:4412 cx16.r3 = &lbl36b lda #p8l_lbl36b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:4413 if x$5545 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:4415 goto skip36b bra p8l_skip36b ; source: test_word_lt.p8:4416 lbl36b: fail_word(398) p8l_lbl36b ldy #>$018e lda #<$018e jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:4417 skip36b: p8l_skip36b ; source: test_word_lt.p8:4419 if x$5545 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_549_afterif ; source: test_word_lt.p8:4420 fail_word(399) ldy #>$018f lda #<$018f jsr p8b_main.p8s_fail_word label_asm_549_afterif ; source: test_word_lt.p8:4423 if x$5545 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_551_else ; source: test_word_lt.p8:4424 fail_word(400) ldy #>$0190 lda #<$0190 jsr p8b_main.p8s_fail_word bra label_asm_550_afterif label_asm_551_else ; source: test_word_lt.p8:4426 success++ inc p8b_main.p8v_success label_asm_550_afterif ; source: test_word_lt.p8:4429 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bmi p8l_lbl37a ; source: test_word_lt.p8:4431 goto skip37a bra p8l_skip37a ; source: test_word_lt.p8:4432 lbl37a: fail_word(401) p8l_lbl37a ldy #>$0191 lda #<$0191 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:4433 skip37a: p8l_skip37a ; source: test_word_lt.p8:4435 cx16.r3 = &lbl37b lda #p8l_lbl37b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:4436 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:4438 goto skip37b bra p8l_skip37b ; source: test_word_lt.p8:4439 lbl37b: fail_word(402) p8l_lbl37b ldy #>$0192 lda #<$0192 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:4440 skip37b: p8l_skip37b ; source: test_word_lt.p8:4442 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_552_afterif ; source: test_word_lt.p8:4443 fail_word(403) ldy #>$0193 lda #<$0193 jsr p8b_main.p8s_fail_word label_asm_552_afterif ; source: test_word_lt.p8:4446 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_554_else ; source: test_word_lt.p8:4447 fail_word(404) ldy #>$0194 lda #<$0194 jsr p8b_main.p8s_fail_word bra label_asm_553_afterif label_asm_554_else ; source: test_word_lt.p8:4449 success++ inc p8b_main.p8v_success label_asm_553_afterif ; source: test_word_lt.p8:4452 if x$0195 lda #<$0195 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:4456 skip38a: p8l_skip38a ; source: test_word_lt.p8:4458 cx16.r3 = &lbl38b lda #p8l_lbl38b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:4459 if x$0196 lda #<$0196 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:4463 skip38b: p8l_skip38b ; source: test_word_lt.p8:4465 if x$0197 lda #<$0197 jsr p8b_main.p8s_fail_word label_asm_555_afterif ; source: test_word_lt.p8:4469 if x$0198 lda #<$0198 jsr p8b_main.p8s_fail_word bra label_asm_556_afterif label_asm_557_else ; source: test_word_lt.p8:4472 success++ inc p8b_main.p8v_success label_asm_556_afterif ; source: test_word_lt.p8:4475 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bmi p8l_lbl39a ; source: test_word_lt.p8:4477 goto skip39a bra p8l_skip39a ; source: test_word_lt.p8:4478 lbl39a: fail_word(409) p8l_lbl39a ldy #>$0199 lda #<$0199 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:4479 skip39a: p8l_skip39a ; source: test_word_lt.p8:4481 cx16.r3 = &lbl39b lda #p8l_lbl39b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:4482 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:4484 goto skip39b bra p8l_skip39b ; source: test_word_lt.p8:4485 lbl39b: fail_word(410) p8l_lbl39b ldy #>$019a lda #<$019a jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:4486 skip39b: p8l_skip39b ; source: test_word_lt.p8:4488 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_558_afterif ; source: test_word_lt.p8:4489 fail_word(411) ldy #>$019b lda #<$019b jsr p8b_main.p8s_fail_word label_asm_558_afterif ; source: test_word_lt.p8:4492 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_560_else ; source: test_word_lt.p8:4493 fail_word(412) ldy #>$019c lda #<$019c jsr p8b_main.p8s_fail_word bra label_asm_559_afterif label_asm_560_else ; source: test_word_lt.p8:4495 success++ inc p8b_main.p8v_success label_asm_559_afterif ; source: test_word_lt.p8:4498 if x$aa tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bmi p8l_lbl40a ; source: test_word_lt.p8:4500 goto skip40a bra p8l_skip40a ; source: test_word_lt.p8:4501 lbl40a: fail_word(413) p8l_lbl40a ldy #>$019d lda #<$019d jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:4502 skip40a: p8l_skip40a ; source: test_word_lt.p8:4504 cx16.r3 = &lbl40b lda #p8l_lbl40b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:4505 if x$aa tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:4507 goto skip40b bra p8l_skip40b ; source: test_word_lt.p8:4508 lbl40b: fail_word(414) p8l_lbl40b ldy #>$019e lda #<$019e jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:4509 skip40b: p8l_skip40b ; source: test_word_lt.p8:4511 if x$aa tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_561_afterif ; source: test_word_lt.p8:4512 fail_word(415) ldy #>$019f lda #<$019f jsr p8b_main.p8s_fail_word label_asm_561_afterif ; source: test_word_lt.p8:4515 if x$aa tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_563_else ; source: test_word_lt.p8:4516 fail_word(416) ldy #>$01a0 lda #<$01a0 jsr p8b_main.p8s_fail_word bra label_asm_562_afterif label_asm_563_else ; source: test_word_lt.p8:4518 success++ inc p8b_main.p8v_success label_asm_562_afterif ; source: test_word_lt.p8:4521 if x$7700 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bmi p8l_lbl41a ; source: test_word_lt.p8:4523 goto skip41a bra p8l_skip41a ; source: test_word_lt.p8:4524 lbl41a: fail_word(417) p8l_lbl41a ldy #>$01a1 lda #<$01a1 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:4525 skip41a: p8l_skip41a ; source: test_word_lt.p8:4527 cx16.r3 = &lbl41b lda #p8l_lbl41b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:4528 if x$7700 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:4530 goto skip41b bra p8l_skip41b ; source: test_word_lt.p8:4531 lbl41b: fail_word(418) p8l_lbl41b ldy #>$01a2 lda #<$01a2 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:4532 skip41b: p8l_skip41b ; source: test_word_lt.p8:4534 if x$7700 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_564_afterif ; source: test_word_lt.p8:4535 fail_word(419) ldy #>$01a3 lda #<$01a3 jsr p8b_main.p8s_fail_word label_asm_564_afterif ; source: test_word_lt.p8:4538 if x$7700 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_566_else ; source: test_word_lt.p8:4539 fail_word(420) ldy #>$01a4 lda #<$01a4 jsr p8b_main.p8s_fail_word bra label_asm_565_afterif label_asm_566_else ; source: test_word_lt.p8:4541 success++ inc p8b_main.p8v_success label_asm_565_afterif ; source: test_word_lt.p8:4544 if x$7fff tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bmi p8l_lbl42a ; source: test_word_lt.p8:4546 goto skip42a bra p8l_skip42a ; source: test_word_lt.p8:4547 lbl42a: success++ p8l_lbl42a inc p8b_main.p8v_success ; source: test_word_lt.p8:4548 skip42a: p8l_skip42a ; source: test_word_lt.p8:4550 cx16.r3 = &lbl42b lda #p8l_lbl42b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:4551 if x$7fff tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:4553 goto skip42b bra p8l_skip42b ; source: test_word_lt.p8:4554 lbl42b: success++ p8l_lbl42b inc p8b_main.p8v_success ; source: test_word_lt.p8:4555 skip42b: p8l_skip42b ; source: test_word_lt.p8:4557 if x$7fff tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_567_afterif ; source: test_word_lt.p8:4558 success++ inc p8b_main.p8v_success label_asm_567_afterif ; source: test_word_lt.p8:4561 if x$7fff tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_569_else ; source: test_word_lt.p8:4562 success++ inc p8b_main.p8v_success bra label_asm_568_afterif label_asm_569_else ; source: test_word_lt.p8:4564 cx16.r0L++ inc cx16.r0L label_asm_568_afterif ; source: test_word_lt.p8:4566 x=32767 lda #<$7fff ldy #>$7fff sta p8v_x sty p8v_x+1 ; source: test_word_lt.p8:4568 if x$5545 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bmi p8l_lbl43a ; source: test_word_lt.p8:4570 goto skip43a bra p8l_skip43a ; source: test_word_lt.p8:4571 lbl43a: fail_word(421) p8l_lbl43a ldy #>$01a5 lda #<$01a5 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:4572 skip43a: p8l_skip43a ; source: test_word_lt.p8:4574 cx16.r3 = &lbl43b lda #p8l_lbl43b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:4575 if x$5545 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:4577 goto skip43b bra p8l_skip43b ; source: test_word_lt.p8:4578 lbl43b: fail_word(422) p8l_lbl43b ldy #>$01a6 lda #<$01a6 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:4579 skip43b: p8l_skip43b ; source: test_word_lt.p8:4581 if x$5545 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_570_afterif ; source: test_word_lt.p8:4582 fail_word(423) ldy #>$01a7 lda #<$01a7 jsr p8b_main.p8s_fail_word label_asm_570_afterif ; source: test_word_lt.p8:4585 if x$5545 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_572_else ; source: test_word_lt.p8:4586 fail_word(424) ldy #>$01a8 lda #<$01a8 jsr p8b_main.p8s_fail_word bra label_asm_571_afterif label_asm_572_else ; source: test_word_lt.p8:4588 success++ inc p8b_main.p8v_success label_asm_571_afterif ; source: test_word_lt.p8:4591 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bmi p8l_lbl44a ; source: test_word_lt.p8:4593 goto skip44a bra p8l_skip44a ; source: test_word_lt.p8:4594 lbl44a: fail_word(425) p8l_lbl44a ldy #>$01a9 lda #<$01a9 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:4595 skip44a: p8l_skip44a ; source: test_word_lt.p8:4597 cx16.r3 = &lbl44b lda #p8l_lbl44b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:4598 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:4600 goto skip44b bra p8l_skip44b ; source: test_word_lt.p8:4601 lbl44b: fail_word(426) p8l_lbl44b ldy #>$01aa lda #<$01aa jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:4602 skip44b: p8l_skip44b ; source: test_word_lt.p8:4604 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_573_afterif ; source: test_word_lt.p8:4605 fail_word(427) ldy #>$01ab lda #<$01ab jsr p8b_main.p8s_fail_word label_asm_573_afterif ; source: test_word_lt.p8:4608 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_575_else ; source: test_word_lt.p8:4609 fail_word(428) ldy #>$01ac lda #<$01ac jsr p8b_main.p8s_fail_word bra label_asm_574_afterif label_asm_575_else ; source: test_word_lt.p8:4611 success++ inc p8b_main.p8v_success label_asm_574_afterif ; source: test_word_lt.p8:4614 if x$01ad lda #<$01ad jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:4618 skip45a: p8l_skip45a ; source: test_word_lt.p8:4620 cx16.r3 = &lbl45b lda #p8l_lbl45b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:4621 if x$01ae lda #<$01ae jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:4625 skip45b: p8l_skip45b ; source: test_word_lt.p8:4627 if x$01af lda #<$01af jsr p8b_main.p8s_fail_word label_asm_576_afterif ; source: test_word_lt.p8:4631 if x$01b0 lda #<$01b0 jsr p8b_main.p8s_fail_word bra label_asm_577_afterif label_asm_578_else ; source: test_word_lt.p8:4634 success++ inc p8b_main.p8v_success label_asm_577_afterif ; source: test_word_lt.p8:4637 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bmi p8l_lbl46a ; source: test_word_lt.p8:4639 goto skip46a bra p8l_skip46a ; source: test_word_lt.p8:4640 lbl46a: fail_word(433) p8l_lbl46a ldy #>$01b1 lda #<$01b1 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:4641 skip46a: p8l_skip46a ; source: test_word_lt.p8:4643 cx16.r3 = &lbl46b lda #p8l_lbl46b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:4644 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:4646 goto skip46b bra p8l_skip46b ; source: test_word_lt.p8:4647 lbl46b: fail_word(434) p8l_lbl46b ldy #>$01b2 lda #<$01b2 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:4648 skip46b: p8l_skip46b ; source: test_word_lt.p8:4650 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_579_afterif ; source: test_word_lt.p8:4651 fail_word(435) ldy #>$01b3 lda #<$01b3 jsr p8b_main.p8s_fail_word label_asm_579_afterif ; source: test_word_lt.p8:4654 if x1 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_581_else ; source: test_word_lt.p8:4655 fail_word(436) ldy #>$01b4 lda #<$01b4 jsr p8b_main.p8s_fail_word bra label_asm_580_afterif label_asm_581_else ; source: test_word_lt.p8:4657 success++ inc p8b_main.p8v_success label_asm_580_afterif ; source: test_word_lt.p8:4660 if x$aa tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bmi p8l_lbl47a ; source: test_word_lt.p8:4662 goto skip47a bra p8l_skip47a ; source: test_word_lt.p8:4663 lbl47a: fail_word(437) p8l_lbl47a ldy #>$01b5 lda #<$01b5 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:4664 skip47a: p8l_skip47a ; source: test_word_lt.p8:4666 cx16.r3 = &lbl47b lda #p8l_lbl47b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:4667 if x$aa tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:4669 goto skip47b bra p8l_skip47b ; source: test_word_lt.p8:4670 lbl47b: fail_word(438) p8l_lbl47b ldy #>$01b6 lda #<$01b6 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:4671 skip47b: p8l_skip47b ; source: test_word_lt.p8:4673 if x$aa tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_582_afterif ; source: test_word_lt.p8:4674 fail_word(439) ldy #>$01b7 lda #<$01b7 jsr p8b_main.p8s_fail_word label_asm_582_afterif ; source: test_word_lt.p8:4677 if x$aa tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_584_else ; source: test_word_lt.p8:4678 fail_word(440) ldy #>$01b8 lda #<$01b8 jsr p8b_main.p8s_fail_word bra label_asm_583_afterif label_asm_584_else ; source: test_word_lt.p8:4680 success++ inc p8b_main.p8v_success label_asm_583_afterif ; source: test_word_lt.p8:4683 if x$7700 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bmi p8l_lbl48a ; source: test_word_lt.p8:4685 goto skip48a bra p8l_skip48a ; source: test_word_lt.p8:4686 lbl48a: fail_word(441) p8l_lbl48a ldy #>$01b9 lda #<$01b9 jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:4687 skip48a: p8l_skip48a ; source: test_word_lt.p8:4689 cx16.r3 = &lbl48b lda #p8l_lbl48b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:4690 if x$7700 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:4692 goto skip48b bra p8l_skip48b ; source: test_word_lt.p8:4693 lbl48b: fail_word(442) p8l_lbl48b ldy #>$01ba lda #<$01ba jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:4694 skip48b: p8l_skip48b ; source: test_word_lt.p8:4696 if x$7700 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_585_afterif ; source: test_word_lt.p8:4697 fail_word(443) ldy #>$01bb lda #<$01bb jsr p8b_main.p8s_fail_word label_asm_585_afterif ; source: test_word_lt.p8:4700 if x$7700 tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_587_else ; source: test_word_lt.p8:4701 fail_word(444) ldy #>$01bc lda #<$01bc jsr p8b_main.p8s_fail_word bra label_asm_586_afterif label_asm_587_else ; source: test_word_lt.p8:4703 success++ inc p8b_main.p8v_success label_asm_586_afterif ; source: test_word_lt.p8:4706 if x$7fff tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bmi p8l_lbl49a ; source: test_word_lt.p8:4708 goto skip49a bra p8l_skip49a ; source: test_word_lt.p8:4709 lbl49a: fail_word(445) p8l_lbl49a ldy #>$01bd lda #<$01bd jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:4710 skip49a: p8l_skip49a ; source: test_word_lt.p8:4712 cx16.r3 = &lbl49b lda #p8l_lbl49b sta cx16.r3 sty cx16.r3+1 ; source: test_word_lt.p8:4713 if x$7fff tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #128 + bpl + jmp (cx16.r3) + ; source: test_word_lt.p8:4715 goto skip49b bra p8l_skip49b ; source: test_word_lt.p8:4716 lbl49b: fail_word(446) p8l_lbl49b ldy #>$01be lda #<$01be jsr p8b_main.p8s_fail_word ; source: test_word_lt.p8:4717 skip49b: p8l_skip49b ; source: test_word_lt.p8:4719 if x$7fff tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_588_afterif ; source: test_word_lt.p8:4720 fail_word(447) ldy #>$01bf lda #<$01bf jsr p8b_main.p8s_fail_word label_asm_588_afterif ; source: test_word_lt.p8:4723 if x$7fff tay txa sec sbc cx16.r5s tax tya sbc cx16.r5s+1 tay txa sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy p8v_x+1 lda p8v_x cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvs + eor #128 + bmi label_asm_590_else ; source: test_word_lt.p8:4724 fail_word(448) ldy #>$01c0 lda #<$01c0 jsr p8b_main.p8s_fail_word bra label_asm_589_afterif label_asm_590_else ; source: test_word_lt.p8:4726 success++ inc p8b_main.p8v_success label_asm_589_afterif ; source: test_word_lt.p8:4728 verify_success(112) lda #$70 jmp p8b_main.p8s_verify_success ; source: test_word_lt.p8:3587 sub test_cmp_expr() { ; variables .section BSS .send BSS ; non-zeropage variables without initialization value .section BSS p8v_f4 .fill 5 p8v_f5 .fill 5 p8v_x .sint ? .send BSS .pend prog8_init_vars .block rts .bend .pend ; ---- block: 'prog8_interned_strings' ---- prog8_interned_strings .proc ; non-zeropage variables string_1 ; PETSCII:"\nless-than tests for: " .byte $0d, $4c, $45, $53, $53, $2d, $54, $48, $41, $4e, $20, $54, $45, $53, $54, $53 .byte $20, $46, $4f, $52, $3a, $20, $00 string_10 ; PETSCII:" **" .byte $20, $2a, $2a, $00 string_2 ; PETSCII:"\n ubyte @Y { get_column .proc ; source: library:/prog8lib/cx16/textio.p8:52 %asm {{ sec jmp cbm.PLOT .pend ; source: library:/prog8lib/cx16/textio.p8:58 asmsub row(ubyte rownum @A) clobbers(A, X, Y) { row .proc ; source: library:/prog8lib/cx16/textio.p8:60 %asm {{ sec jsr cbm.PLOT tax clc jmp cbm.PLOT .pend ; source: library:/prog8lib/cx16/textio.p8:69 asmsub get_row() -> ubyte @X { get_row .proc ; source: library:/prog8lib/cx16/textio.p8:70 %asm {{ sec jmp cbm.PLOT .pend ; source: library:/prog8lib/cx16/textio.p8:88 asmsub fill_screen (ubyte character @ A, ubyte color @ Y) clobbers(A, X) { fill_screen .proc ; source: library:/prog8lib/cx16/textio.p8:90 %asm {{ sty _ly+1 pha jsr cbm.SCREEN ; get dimensions in X/Y txa lsr a lsr a sta _lx+1 lda #%00010000 jsr set_vera_textmatrix_addresses pla _lx ldx #0 ; modified phy _ly ldy #1 ; modified - sta cx16.VERA_DATA0 sty cx16.VERA_DATA0 sta cx16.VERA_DATA0 sty cx16.VERA_DATA0 sta cx16.VERA_DATA0 sty cx16.VERA_DATA0 sta cx16.VERA_DATA0 sty cx16.VERA_DATA0 dex bne - ply dey beq + stz cx16.VERA_ADDR_L inc cx16.VERA_ADDR_M ; next line bra _lx + rts set_vera_textmatrix_addresses: stz cx16.VERA_CTRL ora #VERA_TEXTMATRIX_BANK sta cx16.VERA_ADDR_H stz cx16.VERA_ADDR_L ; start at (0,0) lda #>VERA_TEXTMATRIX_ADDR sta cx16.VERA_ADDR_M rts .pend ; source: library:/prog8lib/cx16/textio.p8:134 asmsub clear_screenchars (ubyte character @ A) clobbers(X, Y) { clear_screenchars .proc ; source: library:/prog8lib/cx16/textio.p8:137 %asm {{ pha jsr cbm.SCREEN ; get dimensions in X/Y txa lsr a lsr a sta _lx+1 lda #%00100000 jsr fill_screen.set_vera_textmatrix_addresses pla _lx ldx #0 ; modified - sta cx16.VERA_DATA0 sta cx16.VERA_DATA0 sta cx16.VERA_DATA0 sta cx16.VERA_DATA0 dex bne - dey beq + stz cx16.VERA_ADDR_L inc cx16.VERA_ADDR_M ; next line bra _lx + rts .pend ; source: library:/prog8lib/cx16/textio.p8:163 asmsub clear_screencolors (ubyte color @ A) clobbers(X, Y) { clear_screencolors .proc ; source: library:/prog8lib/cx16/textio.p8:166 %asm {{ sta _la+1 jsr cbm.SCREEN ; get dimensions in X/Y txa lsr a lsr a sta _lx+1 stz cx16.VERA_CTRL lda #%00100000 jsr fill_screen.set_vera_textmatrix_addresses inc cx16.VERA_ADDR_L ; start at (1,0) - the color attribute byte _lx ldx #0 ; modified _la lda #0 ; modified - sta cx16.VERA_DATA0 sta cx16.VERA_DATA0 sta cx16.VERA_DATA0 sta cx16.VERA_DATA0 dex bne - dey beq + lda #1 sta cx16.VERA_ADDR_L inc cx16.VERA_ADDR_M ; next line bra _lx + rts .pend ; source: library:/prog8lib/cx16/textio.p8:232 asmsub scroll_left() clobbers(A, X, Y) { scroll_left .proc ; source: library:/prog8lib/cx16/textio.p8:235 %asm {{ jsr cbm.SCREEN dex stx _lx+1 dey sty P8ZP_SCRATCH_B1 ; number of rows to scroll _nextline stz cx16.VERA_CTRL ; data port 0: source column lda #%00010000 | VERA_TEXTMATRIX_BANK ; auto increment 1 sta cx16.VERA_ADDR_H lda #2 sta cx16.VERA_ADDR_L ; begin in column 1 lda P8ZP_SCRATCH_B1 clc adc #>VERA_TEXTMATRIX_ADDR tay sty cx16.VERA_ADDR_M lda #1 sta cx16.VERA_CTRL ; data port 1: destination column lda #%00010000 | VERA_TEXTMATRIX_BANK ; auto increment 1 sta cx16.VERA_ADDR_H stz cx16.VERA_ADDR_L sty cx16.VERA_ADDR_M _lx ldx #0 ; modified - lda cx16.VERA_DATA0 sta cx16.VERA_DATA1 ; copy char lda cx16.VERA_DATA0 sta cx16.VERA_DATA1 ; copy color dex bne - dec P8ZP_SCRATCH_B1 bpl _nextline lda #0 sta cx16.VERA_CTRL rts .pend ; source: library:/prog8lib/cx16/textio.p8:276 asmsub scroll_right() clobbers(A,X,Y) { scroll_right .proc ; source: library:/prog8lib/cx16/textio.p8:279 %asm {{ jsr cbm.SCREEN dex stx _lx+1 txa asl a dea sta _rcol+1 ina ina sta _rcol2+1 dey sty P8ZP_SCRATCH_B1 ; number of rows to scroll _nextline stz cx16.VERA_CTRL ; data port 0: source column lda #%00011000 | VERA_TEXTMATRIX_BANK ; auto decrement 1 sta cx16.VERA_ADDR_H _rcol lda #79*2-1 ; modified sta cx16.VERA_ADDR_L ; begin in rightmost column minus one lda P8ZP_SCRATCH_B1 clc adc #>VERA_TEXTMATRIX_ADDR tay sty cx16.VERA_ADDR_M lda #1 sta cx16.VERA_CTRL ; data port 1: destination column lda #%00011000 | VERA_TEXTMATRIX_BANK ; auto decrement 1 sta cx16.VERA_ADDR_H _rcol2 lda #79*2+1 ; modified sta cx16.VERA_ADDR_L sty cx16.VERA_ADDR_M _lx ldx #0 ; modified - lda cx16.VERA_DATA0 sta cx16.VERA_DATA1 ; copy char lda cx16.VERA_DATA0 sta cx16.VERA_DATA1 ; copy color dex bne - dec P8ZP_SCRATCH_B1 bpl _nextline lda #0 sta cx16.VERA_CTRL rts .pend ; source: library:/prog8lib/cx16/textio.p8:328 asmsub scroll_up() clobbers(A, X, Y) { scroll_up .proc ; source: library:/prog8lib/cx16/textio.p8:331 %asm {{ jsr cbm.SCREEN stx _nextline+1 dey sty P8ZP_SCRATCH_B1 stz cx16.VERA_CTRL ; data port 0 is source lda #1 | (>VERA_TEXTMATRIX_ADDR) sta cx16.VERA_ADDR_M ; start at second line stz cx16.VERA_ADDR_L lda #%00010000 | VERA_TEXTMATRIX_BANK sta cx16.VERA_ADDR_H ; enable auto increment by 1, bank 0. lda #1 sta cx16.VERA_CTRL ; data port 1 is destination lda #>VERA_TEXTMATRIX_ADDR sta cx16.VERA_ADDR_M ; start at top line stz cx16.VERA_ADDR_L lda #%00010000 | VERA_TEXTMATRIX_BANK sta cx16.VERA_ADDR_H ; enable auto increment by 1, bank 0. _nextline ldx #80 ; modified - lda cx16.VERA_DATA0 sta cx16.VERA_DATA1 ; copy char lda cx16.VERA_DATA0 sta cx16.VERA_DATA1 ; copy color dex bne - dec P8ZP_SCRATCH_B1 beq + stz cx16.VERA_CTRL ; data port 0 stz cx16.VERA_ADDR_L inc cx16.VERA_ADDR_M lda #1 sta cx16.VERA_CTRL ; data port 1 stz cx16.VERA_ADDR_L inc cx16.VERA_ADDR_M bra _nextline + lda #0 sta cx16.VERA_CTRL rts .pend ; source: library:/prog8lib/cx16/textio.p8:376 asmsub scroll_down() clobbers(A, X, Y) { scroll_down .proc ; source: library:/prog8lib/cx16/textio.p8:379 %asm {{ jsr cbm.SCREEN stx _nextline+1 dey sty P8ZP_SCRATCH_B1 stz cx16.VERA_CTRL ; data port 0 is source dey tya clc adc #>VERA_TEXTMATRIX_ADDR sta cx16.VERA_ADDR_M ; start at line before bottom line stz cx16.VERA_ADDR_L lda #%00010000 | VERA_TEXTMATRIX_BANK sta cx16.VERA_ADDR_H ; enable auto increment by 1, bank 0. lda #1 sta cx16.VERA_CTRL ; data port 1 is destination iny tya clc adc #>VERA_TEXTMATRIX_ADDR sta cx16.VERA_ADDR_M ; start at bottom line stz cx16.VERA_ADDR_L lda #%00010000 | VERA_TEXTMATRIX_BANK sta cx16.VERA_ADDR_H ; enable auto increment by 1, bank 0. _nextline ldx #80 ; modified - lda cx16.VERA_DATA0 sta cx16.VERA_DATA1 ; copy char lda cx16.VERA_DATA0 sta cx16.VERA_DATA1 ; copy color dex bne - dec P8ZP_SCRATCH_B1 beq + stz cx16.VERA_CTRL ; data port 0 stz cx16.VERA_ADDR_L dec cx16.VERA_ADDR_M lda #1 sta cx16.VERA_CTRL ; data port 1 stz cx16.VERA_ADDR_L dec cx16.VERA_ADDR_M bra _nextline + lda #0 sta cx16.VERA_CTRL rts .pend ; source: library:/prog8lib/cx16/textio.p8:430 romsub $FFD2 = chrout(ubyte character @ A) ; for consistency. You can also use cbm.CHROUT directly ofcourse. Note: takes a PETSCII encoded character. ; source: library:/prog8lib/cx16/textio.p8:432 asmsub print (str text @ AY) clobbers(A,Y) { print .proc ; source: library:/prog8lib/cx16/textio.p8:437 %asm {{ sta P8ZP_SCRATCH_B1 sty P8ZP_SCRATCH_REG ldy #0 - lda (P8ZP_SCRATCH_B1),y beq + jsr cbm.CHROUT iny bne - + rts .pend ; source: library:/prog8lib/cx16/textio.p8:450 asmsub print_ub0 (ubyte value @ A) clobbers(A,X,Y) { print_ub0 .proc ; source: library:/prog8lib/cx16/textio.p8:452 %asm {{ jsr conv.ubyte2decimal pha tya jsr cbm.CHROUT pla jsr cbm.CHROUT txa jmp cbm.CHROUT .pend ; source: library:/prog8lib/cx16/textio.p8:464 asmsub print_ub (ubyte value @ A) clobbers(A,X,Y) { print_ub .proc ; source: library:/prog8lib/cx16/textio.p8:466 %asm {{ jsr conv.ubyte2decimal _print_byte_digits pha cpy #'0' beq + tya jsr cbm.CHROUT pla jsr cbm.CHROUT bra _ones + pla cmp #'0' beq _ones jsr cbm.CHROUT _ones txa jmp cbm.CHROUT .pend ; source: library:/prog8lib/cx16/textio.p8:486 asmsub print_b (byte value @ A) clobbers(A,X,Y) { print_b .proc ; source: library:/prog8lib/cx16/textio.p8:488 %asm {{ pha cmp #0 bpl + lda #'-' jsr cbm.CHROUT + pla jsr conv.byte2decimal bra print_ub._print_byte_digits .pend ; source: library:/prog8lib/cx16/textio.p8:500 asmsub print_ubhex (ubyte value @ A, bool prefix @ Pc) clobbers(A,X,Y) { print_ubhex .proc ; source: library:/prog8lib/cx16/textio.p8:502 %asm {{ bcc + pha lda #'$' jsr cbm.CHROUT pla + jsr conv.ubyte2hex jsr cbm.CHROUT tya jmp cbm.CHROUT .pend ; source: library:/prog8lib/cx16/textio.p8:515 asmsub print_ubbin (ubyte value @ A, bool prefix @ Pc) clobbers(A,X,Y) { print_ubbin .proc ; source: library:/prog8lib/cx16/textio.p8:517 %asm {{ sta P8ZP_SCRATCH_B1 bcc + lda #'%' jsr cbm.CHROUT + ldy #8 - lda #'0' asl P8ZP_SCRATCH_B1 bcc + lda #'1' + jsr cbm.CHROUT dey bne - rts .pend ; source: library:/prog8lib/cx16/textio.p8:534 asmsub print_uwbin (uword value @ AY, bool prefix @ Pc) clobbers(A,X,Y) { print_uwbin .proc ; source: library:/prog8lib/cx16/textio.p8:536 %asm {{ pha tya jsr print_ubbin pla clc bra print_ubbin .pend ; source: library:/prog8lib/cx16/textio.p8:546 asmsub print_uwhex (uword value @ AY, bool prefix @ Pc) clobbers(A,X,Y) { print_uwhex .proc ; source: library:/prog8lib/cx16/textio.p8:549 %asm {{ pha tya jsr print_ubhex pla clc bra print_ubhex .pend ; source: library:/prog8lib/cx16/textio.p8:559 asmsub print_uw0 (uword value @ AY) clobbers(A,X,Y) { print_uw0 .proc ; source: library:/prog8lib/cx16/textio.p8:561 %asm {{ jsr conv.uword2decimal ldy #0 - lda conv.uword2decimal.decTenThousands,y beq + jsr cbm.CHROUT iny bne - + rts .pend ; source: library:/prog8lib/cx16/textio.p8:573 asmsub print_uw (uword value @ AY) clobbers(A,X,Y) { print_uw .proc ; source: library:/prog8lib/cx16/textio.p8:575 %asm {{ jsr conv.uword2decimal ldy #0 - lda conv.uword2decimal.decTenThousands,y beq _allzero cmp #'0' bne _gotdigit iny bne - _gotdigit jsr cbm.CHROUT iny lda conv.uword2decimal.decTenThousands,y bne _gotdigit rts _allzero lda #'0' jmp cbm.CHROUT .pend ; source: library:/prog8lib/cx16/textio.p8:597 asmsub print_w (word value @ AY) clobbers(A,X,Y) { print_w .proc ; source: library:/prog8lib/cx16/textio.p8:599 %asm {{ cpy #0 bpl + pha lda #'-' jsr cbm.CHROUT tya eor #255 tay pla eor #255 ina bne + iny + bra print_uw .pend ; source: library:/prog8lib/cx16/textio.p8:617 asmsub input_chars (uword buffer @ AY) clobbers(A) -> ubyte @ Y { input_chars .proc ; source: library:/prog8lib/cx16/textio.p8:622 %asm {{ sta P8ZP_SCRATCH_W1 sty P8ZP_SCRATCH_W1+1 ldy #0 ; char counter = 0 - jsr cbm.CHRIN cmp #$0d ; return (ascii 13) pressed? beq + ; yes, end. sta (P8ZP_SCRATCH_W1),y ; else store char in buffer iny bne - + lda #0 sta (P8ZP_SCRATCH_W1),y ; finish string with 0 byte rts .pend ; source: library:/prog8lib/cx16/textio.p8:639 asmsub setchr (ubyte col @X, ubyte row @Y, ubyte character @A) clobbers(A) { setchr .proc ; source: library:/prog8lib/cx16/textio.p8:641 %asm {{ pha stz cx16.VERA_CTRL lda #VERA_TEXTMATRIX_BANK sta cx16.VERA_ADDR_H txa asl a sta cx16.VERA_ADDR_L tya ; clc adc #>VERA_TEXTMATRIX_ADDR sta cx16.VERA_ADDR_M pla sta cx16.VERA_DATA0 rts .pend ; source: library:/prog8lib/cx16/textio.p8:659 asmsub getchr (ubyte col @A, ubyte row @Y) -> ubyte @ A { getchr .proc ; source: library:/prog8lib/cx16/textio.p8:661 %asm {{ asl a pha stz cx16.VERA_CTRL lda #VERA_TEXTMATRIX_BANK sta cx16.VERA_ADDR_H pla sta cx16.VERA_ADDR_L tya ; clc adc #>VERA_TEXTMATRIX_ADDR sta cx16.VERA_ADDR_M lda cx16.VERA_DATA0 rts .pend ; source: library:/prog8lib/cx16/textio.p8:678 asmsub setclr (ubyte col @X, ubyte row @Y, ubyte color @A) clobbers(A) { setclr .proc ; source: library:/prog8lib/cx16/textio.p8:682 %asm {{ pha stz cx16.VERA_CTRL lda #VERA_TEXTMATRIX_BANK sta cx16.VERA_ADDR_H txa asl a ina sta cx16.VERA_ADDR_L tya ; clc adc #>VERA_TEXTMATRIX_ADDR sta cx16.VERA_ADDR_M pla sta cx16.VERA_DATA0 rts .pend ; source: library:/prog8lib/cx16/textio.p8:701 asmsub getclr (ubyte col @A, ubyte row @Y) -> ubyte @ A { getclr .proc ; source: library:/prog8lib/cx16/textio.p8:703 %asm {{ asl a ina pha stz cx16.VERA_CTRL lda #VERA_TEXTMATRIX_BANK sta cx16.VERA_ADDR_H pla sta cx16.VERA_ADDR_L tya ; clc adc #>VERA_TEXTMATRIX_ADDR sta cx16.VERA_ADDR_M lda cx16.VERA_DATA0 rts .pend ; source: library:/prog8lib/cx16/textio.p8:778 asmsub plot (ubyte col @ Y, ubyte row @ X) { plot .proc ; source: library:/prog8lib/cx16/textio.p8:779 %asm {{ clc jmp cbm.PLOT .pend ; source: library:/prog8lib/cx16/textio.p8:785 asmsub width() clobbers(X,Y) -> ubyte @A { width .proc ; source: library:/prog8lib/cx16/textio.p8:787 %asm {{ jsr cbm.SCREEN txa rts .pend ; source: library:/prog8lib/cx16/textio.p8:794 asmsub height() clobbers(X, Y) -> ubyte @A { height .proc ; source: library:/prog8lib/cx16/textio.p8:796 %asm {{ jsr cbm.SCREEN tya rts .pend ; source: library:/prog8lib/cx16/textio.p8:803 asmsub waitkey() -> ubyte @A { waitkey .proc ; source: library:/prog8lib/cx16/textio.p8:804 %asm {{ - jsr cbm.GETIN beq - rts .pend ; source: library:/prog8lib/shared_textio_functions.p8:5 asmsub petscii2scr(ubyte petscii_char @A) -> ubyte @A { petscii2scr .proc ; source: library:/prog8lib/shared_textio_functions.p8:7 %asm {{ sta P8ZP_SCRATCH_REG lsr a lsr a lsr a lsr a lsr a tax lda _offsets,x eor P8ZP_SCRATCH_REG rts _offsets .byte 128, 0, 64, 32, 64, 192, 128, 128 .pend ; source: library:/prog8lib/shared_textio_functions.p8:22 asmsub petscii2scr_str(str petscii_string @AY) { petscii2scr_str .proc ; source: library:/prog8lib/shared_textio_functions.p8:24 %asm {{ sta P8ZP_SCRATCH_W1 sty P8ZP_SCRATCH_W1+1 ldy #0 - lda (P8ZP_SCRATCH_W1),y beq + jsr petscii2scr sta (P8ZP_SCRATCH_W1),y iny bne - + rts .pend .pend ; ---- block: 'cbm' ---- cbm .proc ; source: library:/prog8lib/cx16/syslib.p8:6 cbm { CINT = $ff81 IOINIT = $ff84 RAMTAS = $ff87 RESTOR = $ff8a VECTOR = $ff8d SETMSG = $ff90 SECOND = $ff93 TKSA = $ff96 MEMTOP = $ff99 MEMBOT = $ff9c SCNKEY = $ff9f SETTMO = $ffa2 ACPTR = $ffa5 CIOUT = $ffa8 UNTLK = $ffab UNLSN = $ffae LISTEN = $ffb1 TALK = $ffb4 READST = $ffb7 SETLFS = $ffba SETNAM = $ffbd OPEN = $ffc0 CLOSE = $ffc3 CHKIN = $ffc6 CHKOUT = $ffc9 CLRCHN = $ffcc CHRIN = $ffcf CHROUT = $ffd2 LOAD = $ffd5 SAVE = $ffd8 SETTIM = $ffdb RDTIM = $ffde STOP = $ffe1 GETIN = $ffe4 CLALL = $ffe7 UDTIM = $ffea SCREEN = $ffed PLOT = $fff0 IOBASE = $fff3 ; source: library:/prog8lib/cx16/syslib.p8:14 romsub $FF81 = CINT() clobbers(A,X,Y) ; (alias: SCINIT) initialize screen editor and video chip, including resetting to the default color palette. Note: also sets the video mode back to VGA ; source: library:/prog8lib/cx16/syslib.p8:15 romsub $FF84 = IOINIT() clobbers(A, X) ; initialize I/O devices (CIA, IRQ, ...) ; source: library:/prog8lib/cx16/syslib.p8:16 romsub $FF87 = RAMTAS() clobbers(A,X,Y) ; initialize RAM, screen ; source: library:/prog8lib/cx16/syslib.p8:17 romsub $FF8A = RESTOR() clobbers(A,X,Y) ; restore default I/O vectors ; source: library:/prog8lib/cx16/syslib.p8:18 romsub $FF8D = VECTOR(uword userptr @ XY, bool dir @ Pc) clobbers(A,Y) ; read/set I/O vector table ; source: library:/prog8lib/cx16/syslib.p8:19 romsub $FF90 = SETMSG(ubyte value @ A) ; set Kernal message control flag ; source: library:/prog8lib/cx16/syslib.p8:20 romsub $FF93 = SECOND(ubyte address @ A) clobbers(A) ; (alias: LSTNSA) send secondary address after LISTEN ; source: library:/prog8lib/cx16/syslib.p8:21 romsub $FF96 = TKSA(ubyte address @ A) clobbers(A) ; (alias: TALKSA) send secondary address after TALK ; source: library:/prog8lib/cx16/syslib.p8:22 romsub $FF99 = MEMTOP(uword address @ XY, bool dir @ Pc) -> uword @ XY ; read/set top of memory pointer. NOTE: as a Cx16 extension, also returns the number of RAM memory banks in register A ! See cx16.numbanks() ; source: library:/prog8lib/cx16/syslib.p8:23 romsub $FF9C = MEMBOT(uword address @ XY, bool dir @ Pc) -> uword @ XY ; read/set bottom of memory pointer ; source: library:/prog8lib/cx16/syslib.p8:24 romsub $FF9F = SCNKEY() clobbers(A,X,Y) ; scan the keyboard, also called kbd_scan ; source: library:/prog8lib/cx16/syslib.p8:25 romsub $FFA2 = SETTMO(ubyte timeout @ A) ; set time-out flag for IEEE bus ; source: library:/prog8lib/cx16/syslib.p8:26 romsub $FFA5 = ACPTR() -> ubyte @ A ; (alias: IECIN) input byte from serial bus ; source: library:/prog8lib/cx16/syslib.p8:27 romsub $FFA8 = CIOUT(ubyte databyte @ A) ; (alias: IECOUT) output byte to serial bus ; source: library:/prog8lib/cx16/syslib.p8:28 romsub $FFAB = UNTLK() clobbers(A) ; command serial bus device to UNTALK ; source: library:/prog8lib/cx16/syslib.p8:29 romsub $FFAE = UNLSN() clobbers(A) ; command serial bus device to UNLISTEN ; source: library:/prog8lib/cx16/syslib.p8:30 romsub $FFB1 = LISTEN(ubyte device @ A) clobbers(A) ; command serial bus device to LISTEN ; source: library:/prog8lib/cx16/syslib.p8:31 romsub $FFB4 = TALK(ubyte device @ A) clobbers(A) ; command serial bus device to TALK ; source: library:/prog8lib/cx16/syslib.p8:32 romsub $FFB7 = READST() -> ubyte @ A ; read I/O status word (use CLEARST to reset it to 0) ; source: library:/prog8lib/cx16/syslib.p8:33 romsub $FFBA = SETLFS(ubyte logical @ A, ubyte device @ X, ubyte secondary @ Y) ; set logical file parameters ; source: library:/prog8lib/cx16/syslib.p8:34 romsub $FFBD = SETNAM(ubyte namelen @ A, str filename @ XY) ; set filename parameters ; source: library:/prog8lib/cx16/syslib.p8:35 romsub $FFC0 = OPEN() clobbers(X,Y) -> bool @Pc, ubyte @A ; (via 794 ($31A)) open a logical file ; source: library:/prog8lib/cx16/syslib.p8:36 romsub $FFC3 = CLOSE(ubyte logical @ A) clobbers(A,X,Y) ; (via 796 ($31C)) close a logical file ; source: library:/prog8lib/cx16/syslib.p8:37 romsub $FFC6 = CHKIN(ubyte logical @ X) clobbers(A,X) -> bool @Pc ; (via 798 ($31E)) define an input channel ; source: library:/prog8lib/cx16/syslib.p8:38 romsub $FFC9 = CHKOUT(ubyte logical @ X) clobbers(A,X) ; (via 800 ($320)) define an output channel ; source: library:/prog8lib/cx16/syslib.p8:39 romsub $FFCC = CLRCHN() clobbers(A,X) ; (via 802 ($322)) restore default devices ; source: library:/prog8lib/cx16/syslib.p8:40 romsub $FFCF = CHRIN() clobbers(X, Y) -> ubyte @ A ; (via 804 ($324)) input a character (for keyboard, read a whole line from the screen) A=byte read. ; source: library:/prog8lib/cx16/syslib.p8:41 romsub $FFD2 = CHROUT(ubyte character @ A) ; (via 806 ($326)) output a character ; source: library:/prog8lib/cx16/syslib.p8:42 romsub $FFD5 = LOAD(ubyte verify @ A, uword address @ XY) -> bool @Pc, ubyte @ A, uword @ XY ; (via 816 ($330)) load from device ; source: library:/prog8lib/cx16/syslib.p8:43 romsub $FFD8 = SAVE(ubyte zp_startaddr @ A, uword endaddr @ XY) clobbers (X, Y) -> bool @ Pc, ubyte @ A ; (via 818 ($332)) save to a device. See also BSAVE ; source: library:/prog8lib/cx16/syslib.p8:44 romsub $FFDB = SETTIM(ubyte low @ A, ubyte middle @ X, ubyte high @ Y) ; set the software clock ; source: library:/prog8lib/cx16/syslib.p8:45 romsub $FFDE = RDTIM() -> ubyte @ A, ubyte @ X, ubyte @ Y ; read the software clock (A=lo,X=mid,Y=high) ; source: library:/prog8lib/cx16/syslib.p8:46 romsub $FFE1 = STOP() clobbers(X) -> bool @ Pz, ubyte @ A ; (via 808 ($328)) check the STOP key (and some others in A) ; source: library:/prog8lib/cx16/syslib.p8:47 romsub $FFE4 = GETIN() clobbers(X,Y) -> bool @Pc, ubyte @ A ; (via 810 ($32A)) get a character ; source: library:/prog8lib/cx16/syslib.p8:48 romsub $FFE7 = CLALL() clobbers(A,X) ; (via 812 ($32C)) close all files ; source: library:/prog8lib/cx16/syslib.p8:49 romsub $FFEA = UDTIM() clobbers(A,X) ; update the software clock ; source: library:/prog8lib/cx16/syslib.p8:50 romsub $FFED = SCREEN() -> ubyte @ X, ubyte @ Y ; read number of screen rows and columns ; source: library:/prog8lib/cx16/syslib.p8:51 romsub $FFF0 = PLOT(ubyte col @ Y, ubyte row @ X, bool dir @ Pc) -> ubyte @ X, ubyte @ Y ; read/set position of cursor on screen. Use txt.plot for a 'safe' wrapper that preserves X. ; source: library:/prog8lib/cx16/syslib.p8:52 romsub $FFF3 = IOBASE() -> uword @ XY ; read base address of I/O devices ; source: library:/prog8lib/cx16/syslib.p8:56 asmsub STOP2() clobbers(X) -> bool @A { STOP2 .proc ; source: library:/prog8lib/cx16/syslib.p8:58 %asm {{ jsr cbm.STOP beq + lda #0 rts + lda #1 rts .pend ; source: library:/prog8lib/cx16/syslib.p8:68 asmsub RDTIM16() clobbers(X) -> uword @AY { RDTIM16 .proc ; source: library:/prog8lib/cx16/syslib.p8:70 %asm {{ php sei jsr cbm.RDTIM plp cli pha txa tay pla rts .pend .pend ; ---- block: 'cx16' ---- cx16 .proc ; source: library:/prog8lib/cx16/syslib.p8:95 cx16 { r0 = 2 r0s = 2 r0L = 2 r0sL = 2 r0H = 3 r0sH = 3 r1 = 4 r1s = 4 r1L = 4 r1sL = 4 r1H = 5 r1sH = 5 r2 = 6 r2s = 6 r2L = 6 r2sL = 6 r2H = 7 r2sH = 7 r3 = 8 r3s = 8 r3L = 8 r3sL = 8 r3H = 9 r3sH = 9 r4 = 10 r4s = 10 r4L = 10 r4sL = 10 r4H = 11 r4sH = 11 r5 = 12 r5s = 12 r5L = 12 r5sL = 12 r5H = 13 r5sH = 13 r6 = 14 r6s = 14 r6L = 14 r6sL = 14 r6H = 15 r6sH = 15 r7 = $10 r7s = $10 r7L = $10 r7sL = $10 r7H = $11 r7sH = $11 r8 = $12 r8s = $12 r8L = $12 r8sL = $12 r8H = $13 r8sH = $13 r9 = $14 r9s = $14 r9L = $14 r9sL = $14 r9H = $15 r9sH = $15 r10 = $16 r10s = $16 r10L = $16 r10sL = $16 r10H = $17 r10sH = $17 r11 = $18 r11s = $18 r11L = $18 r11sL = $18 r11H = $19 r11sH = $19 r12 = $1a r12s = $1a r12L = $1a r12sL = $1a r12H = $1b r12sH = $1b r13 = $1c r13s = $1c r13L = $1c r13sL = $1c r13H = $1d r13sH = $1d r14 = $1e r14s = $1e r14L = $1e r14sL = $1e r14H = $1f r14sH = $1f r15 = $20 r15s = $20 r15L = $20 r15sL = $20 r15H = $21 r15sH = $21 IERROR = $0300 IMAIN = $0302 ICRNCH = $0304 IQPLOP = $0306 IGONE = $0308 IEVAL = $030a SAREG = $030c SXREG = $030d SYREG = $030e SPREG = $030f USRADD = $0311 CINV = $0314 CBINV = $0316 NMINV = $0318 IOPEN = $031a ICLOSE = $031c ICHKIN = $031e ICKOUT = $0320 ICLRCH = $0322 IBASIN = $0324 IBSOUT = $0326 ISTOP = $0328 IGETIN = $032a ICLALL = $032c KEYHDL = $032e ILOAD = $0330 ISAVE = $0332 via1prb = $9f00 via1pra = $9f01 via1ddrb = $9f02 via1ddra = $9f03 via1t1l = $9f04 via1t1h = $9f05 via1t1ll = $9f06 via1t1lh = $9f07 via1t2l = $9f08 via1t2h = $9f09 via1sr = $9f0a via1acr = $9f0b via1pcr = $9f0c via1ifr = $9f0d via1ier = $9f0e via1ora = $9f0f via2prb = $9f10 via2pra = $9f11 via2ddrb = $9f12 via2ddra = $9f13 via2t1l = $9f14 via2t1h = $9f15 via2t1ll = $9f16 via2t1lh = $9f17 via2t2l = $9f18 via2t2h = $9f19 via2sr = $9f1a via2acr = $9f1b via2pcr = $9f1c via2ifr = $9f1d via2ier = $9f1e via2ora = $9f1f VERA_ADDR_L = $9f20 VERA_ADDR = $9f20 VERA_ADDR_M = $9f21 VERA_ADDR_H = $9f22 VERA_DATA0 = $9f23 VERA_DATA1 = $9f24 VERA_CTRL = $9f25 VERA_IEN = $9f26 VERA_ISR = $9f27 VERA_IRQLINE_L = $9f28 VERA_SCANLINE_L = $9f28 VERA_DC_VIDEO = $9f29 VERA_DC_HSTART = $9f29 VERA_DC_VER0 = $9f29 VERA_FX_CTRL = $9f29 VERA_FX_X_INCR_L = $9f29 VERA_FX_X_INCR = $9f29 VERA_FX_X_POS_L = $9f29 VERA_FX_X_POS = $9f29 VERA_FX_X_POS_S = $9f29 VERA_FX_CACHE_L = $9f29 VERA_FX_ACCUM_RESET = $9f29 VERA_DC_HSCALE = $9f2a VERA_DC_HSTOP = $9f2a VERA_DC_VER1 = $9f2a VERA_FX_TILEBASE = $9f2a VERA_FX_X_INCR_H = $9f2a VERA_FX_X_POS_H = $9f2a VERA_FX_Y_POS_S = $9f2a VERA_FX_CACHE_M = $9f2a VERA_FX_ACCUM = $9f2a VERA_DC_VSCALE = $9f2b VERA_DC_VSTART = $9f2b VERA_DC_VER2 = $9f2b VERA_FX_MAPBASE = $9f2b VERA_FX_Y_INCR_L = $9f2b VERA_FX_Y_INCR = $9f2b VERA_FX_Y_POS_L = $9f2b VERA_FX_Y_POS = $9f2b VERA_FX_POLY_FILL_L = $9f2b VERA_FX_POLY_FILL = $9f2b VERA_FX_CACHE_H = $9f2b VERA_DC_BORDER = $9f2c VERA_DC_VSTOP = $9f2c VERA_DC_VER3 = $9f2c VERA_FX_MULT = $9f2c VERA_FX_Y_INCR_H = $9f2c VERA_FX_Y_POS_H = $9f2c VERA_FX_POLY_FILL_H = $9f2c VERA_FX_CACHE_U = $9f2c VERA_L0_CONFIG = $9f2d VERA_L0_MAPBASE = $9f2e VERA_L0_TILEBASE = $9f2f VERA_L0_HSCROLL_L = $9f30 VERA_L0_HSCROLL = $9f30 VERA_L0_HSCROLL_H = $9f31 VERA_L0_VSCROLL_L = $9f32 VERA_L0_VSCROLL = $9f32 VERA_L0_VSCROLL_H = $9f33 VERA_L1_CONFIG = $9f34 VERA_L1_MAPBASE = $9f35 VERA_L1_TILEBASE = $9f36 VERA_L1_HSCROLL_L = $9f37 VERA_L1_HSCROLL = $9f37 VERA_L1_HSCROLL_H = $9f38 VERA_L1_VSCROLL_L = $9f39 VERA_L1_VSCROLL = $9f39 VERA_L1_VSCROLL_H = $9f3a VERA_AUDIO_CTRL = $9f3b VERA_AUDIO_RATE = $9f3c VERA_AUDIO_DATA = $9f3d VERA_SPI_DATA = $9f3e VERA_SPI_CTRL = $9f3f YM_ADDRESS = $9f40 YM_DATA = $9f41 edkeyvec = $ac03 edkeybk = $ac05 NMI_VEC = $fffa RESET_VEC = $fffc IRQ_VEC = $fffe VERA_BASE = $9f20 VIA1_BASE = $9f00 VIA2_BASE = $9f10 extdev = $9f60 CLOSE_ALL = $ff4a LKUPLA = $ff59 LKUPSA = $ff5c screen_mode = $ff5f screen_set_charset = $ff62 JSRFAR = $ff6e fetch = $ff74 stash = $ff77 PRIMM = $ff7d GRAPH_init = $ff20 GRAPH_clear = $ff23 GRAPH_set_window = $ff26 GRAPH_set_colors = $ff29 GRAPH_draw_line = $ff2c GRAPH_draw_rect = $ff2f GRAPH_move_rect = $ff32 GRAPH_draw_oval = $ff35 GRAPH_draw_image = $ff38 GRAPH_set_font = $ff3b GRAPH_get_char_size = $ff3e GRAPH_put_char = $ff41 GRAPH_put_next_char = $ff41 FB_init = $fef6 FB_get_info = $fef9 FB_set_palette = $fefc FB_cursor_position = $feff FB_cursor_next_line = $ff02 FB_get_pixel = $ff05 FB_get_pixels = $ff08 FB_set_pixel = $ff0b FB_set_pixels = $ff0e FB_set_8_pixels = $ff11 FB_set_8_pixels_opaque = $ff14 FB_fill_pixels = $ff17 FB_filter_pixels = $ff1a FB_move_pixels = $ff1d BSAVE = $feba i2c_read_byte = $fec6 i2c_write_byte = $fec9 sprite_set_image = $fef0 sprite_set_position = $fef3 memory_fill = $fee4 memory_copy = $fee7 memory_crc = $feea memory_decompress = $feed console_init = $fedb console_put_char = $fede console_get_char = $fee1 console_put_image = $fed8 console_set_paging_message = $fed5 entropy_get = $fecf monitor = $fecc MACPTR = $ff44 MCIOUT = $feb1 enter_basic = $ff47 clock_set_date_time = $ff4d clock_get_date_time = $ff50 kbdbuf_peek = $febd kbdbuf_peek2 = $febd kbdbuf_get_modifiers = $fec0 kbdbuf_put = $fec3 keymap = $fed2 mouse_config = $ff68 mouse_get = $ff6b mouse_scan = $ff71 joystick_scan = $ff53 joystick_get = $ff56 joystick_get2 = $ff56 x16edit_default = $c000 x16edit_loadfile = $c003 x16edit_loadfile_options = $c006 audio_init = $c09f bas_fmfreq = $c000 bas_fmnote = $c003 bas_fmplaystring = $c006 bas_fmvib = $c009 bas_playstringvoice = $c00c bas_psgfreq = $c00f bas_psgnote = $c012 bas_psgwav = $c015 bas_psgplaystring = $c018 bas_fmchordstring = $c08d bas_psgchordstring = $c090 notecon_bas2fm = $c01b notecon_bas2midi = $c01e notecon_bas2psg = $c021 notecon_fm2bas = $c024 notecon_fm2midi = $c027 notecon_fm2psg = $c02a notecon_freq2bas = $c02d notecon_freq2fm = $c030 notecon_freq2midi = $c033 notecon_freq2psg = $c036 notecon_midi2bas = $c039 notecon_midi2fm = $c03c notecon_midi2psg = $c03f notecon_psg2bas = $c042 notecon_psg2fm = $c045 notecon_psg2midi = $c048 psg_init = $c04b psg_playfreq = $c04e psg_read = $c051 psg_setatten = $c054 psg_setfreq = $c057 psg_setpan = $c05a psg_setvol = $c05d psg_write = $c060 psg_write_fast = $c0a2 psg_getatten = $c093 psg_getpan = $c096 ym_init = $c063 ym_loaddefpatches = $c066 ym_loadpatch = $c069 ym_loadpatchlfn = $c06c ym_playdrum = $c06f ym_playnote = $c072 ym_setatten = $c075 ym_setdrum = $c078 ym_setnote = $c07b ym_setpan = $c07e ym_read = $c081 ym_release = $c084 ym_trigger = $c087 ym_write = $c08a ym_getatten = $c099 ym_getpan = $c09c ym_get_chip_type = $c0a5 ; source: library:/prog8lib/cx16/syslib.p8:98 &uword IERROR = $0300 ; source: library:/prog8lib/cx16/syslib.p8:99 &uword IMAIN = $0302 ; source: library:/prog8lib/cx16/syslib.p8:100 &uword ICRNCH = $0304 ; source: library:/prog8lib/cx16/syslib.p8:101 &uword IQPLOP = $0306 ; source: library:/prog8lib/cx16/syslib.p8:102 &uword IGONE = $0308 ; source: library:/prog8lib/cx16/syslib.p8:103 &uword IEVAL = $030a ; source: library:/prog8lib/cx16/syslib.p8:104 &ubyte SAREG = $030c ; register storage for A for SYS calls ; source: library:/prog8lib/cx16/syslib.p8:105 &ubyte SXREG = $030d ; register storage for X for SYS calls ; source: library:/prog8lib/cx16/syslib.p8:106 &ubyte SYREG = $030e ; register storage for Y for SYS calls ; source: library:/prog8lib/cx16/syslib.p8:107 &ubyte SPREG = $030f ; register storage for P (status register) for SYS calls ; source: library:/prog8lib/cx16/syslib.p8:108 &uword USRADD = $0311 ; vector for the USR() basic command ; source: library:/prog8lib/cx16/syslib.p8:110 &uword CINV = $0314 ; IRQ vector (in ram) ; source: library:/prog8lib/cx16/syslib.p8:111 &uword CBINV = $0316 ; BRK vector (in ram) ; source: library:/prog8lib/cx16/syslib.p8:112 &uword NMINV = $0318 ; NMI vector (in ram) ; source: library:/prog8lib/cx16/syslib.p8:113 &uword IOPEN = $031a ; source: library:/prog8lib/cx16/syslib.p8:114 &uword ICLOSE = $031c ; source: library:/prog8lib/cx16/syslib.p8:115 &uword ICHKIN = $031e ; source: library:/prog8lib/cx16/syslib.p8:116 &uword ICKOUT = $0320 ; source: library:/prog8lib/cx16/syslib.p8:117 &uword ICLRCH = $0322 ; source: library:/prog8lib/cx16/syslib.p8:118 &uword IBASIN = $0324 ; source: library:/prog8lib/cx16/syslib.p8:119 &uword IBSOUT = $0326 ; source: library:/prog8lib/cx16/syslib.p8:120 &uword ISTOP = $0328 ; source: library:/prog8lib/cx16/syslib.p8:121 &uword IGETIN = $032a ; source: library:/prog8lib/cx16/syslib.p8:122 &uword ICLALL = $032c ; source: library:/prog8lib/cx16/syslib.p8:123 &uword KEYHDL = $032e ; keyboard scan code handler see examples/cx16/keyboardhandler.p8 ; source: library:/prog8lib/cx16/syslib.p8:124 &uword ILOAD = $0330 ; source: library:/prog8lib/cx16/syslib.p8:125 &uword ISAVE = $0332 ; source: library:/prog8lib/cx16/syslib.p8:126 &uword NMI_VEC = $FFFA ; 65c02 nmi vector, determined by the kernal if banked in ; source: library:/prog8lib/cx16/syslib.p8:127 &uword RESET_VEC = $FFFC ; 65c02 reset vector, determined by the kernal if banked in ; source: library:/prog8lib/cx16/syslib.p8:128 &uword IRQ_VEC = $FFFE ; 65c02 interrupt vector, determined by the kernal if banked in ; source: library:/prog8lib/cx16/syslib.p8:130 &uword edkeyvec = $ac03 ; (ram bank 0): for intercepting BASIN/CHRIN key strokes. See set_chrin_keyhandler() ; source: library:/prog8lib/cx16/syslib.p8:131 &ubyte edkeybk = $ac05 ; ...the RAM bank of the handler routine, if not in low ram ; source: library:/prog8lib/cx16/syslib.p8:135 &uword r0 = $0002 ; source: library:/prog8lib/cx16/syslib.p8:136 &uword r1 = $0004 ; source: library:/prog8lib/cx16/syslib.p8:137 &uword r2 = $0006 ; source: library:/prog8lib/cx16/syslib.p8:138 &uword r3 = $0008 ; source: library:/prog8lib/cx16/syslib.p8:139 &uword r4 = $000a ; source: library:/prog8lib/cx16/syslib.p8:140 &uword r5 = $000c ; source: library:/prog8lib/cx16/syslib.p8:141 &uword r6 = $000e ; source: library:/prog8lib/cx16/syslib.p8:142 &uword r7 = $0010 ; source: library:/prog8lib/cx16/syslib.p8:143 &uword r8 = $0012 ; source: library:/prog8lib/cx16/syslib.p8:144 &uword r9 = $0014 ; source: library:/prog8lib/cx16/syslib.p8:145 &uword r10 = $0016 ; source: library:/prog8lib/cx16/syslib.p8:146 &uword r11 = $0018 ; source: library:/prog8lib/cx16/syslib.p8:147 &uword r12 = $001a ; source: library:/prog8lib/cx16/syslib.p8:148 &uword r13 = $001c ; source: library:/prog8lib/cx16/syslib.p8:149 &uword r14 = $001e ; source: library:/prog8lib/cx16/syslib.p8:150 &uword r15 = $0020 ; source: library:/prog8lib/cx16/syslib.p8:152 &word r0s = $0002 ; source: library:/prog8lib/cx16/syslib.p8:153 &word r1s = $0004 ; source: library:/prog8lib/cx16/syslib.p8:154 &word r2s = $0006 ; source: library:/prog8lib/cx16/syslib.p8:155 &word r3s = $0008 ; source: library:/prog8lib/cx16/syslib.p8:156 &word r4s = $000a ; source: library:/prog8lib/cx16/syslib.p8:157 &word r5s = $000c ; source: library:/prog8lib/cx16/syslib.p8:158 &word r6s = $000e ; source: library:/prog8lib/cx16/syslib.p8:159 &word r7s = $0010 ; source: library:/prog8lib/cx16/syslib.p8:160 &word r8s = $0012 ; source: library:/prog8lib/cx16/syslib.p8:161 &word r9s = $0014 ; source: library:/prog8lib/cx16/syslib.p8:162 &word r10s = $0016 ; source: library:/prog8lib/cx16/syslib.p8:163 &word r11s = $0018 ; source: library:/prog8lib/cx16/syslib.p8:164 &word r12s = $001a ; source: library:/prog8lib/cx16/syslib.p8:165 &word r13s = $001c ; source: library:/prog8lib/cx16/syslib.p8:166 &word r14s = $001e ; source: library:/prog8lib/cx16/syslib.p8:167 &word r15s = $0020 ; source: library:/prog8lib/cx16/syslib.p8:169 &ubyte r0L = $0002 ; source: library:/prog8lib/cx16/syslib.p8:170 &ubyte r1L = $0004 ; source: library:/prog8lib/cx16/syslib.p8:171 &ubyte r2L = $0006 ; source: library:/prog8lib/cx16/syslib.p8:172 &ubyte r3L = $0008 ; source: library:/prog8lib/cx16/syslib.p8:173 &ubyte r4L = $000a ; source: library:/prog8lib/cx16/syslib.p8:174 &ubyte r5L = $000c ; source: library:/prog8lib/cx16/syslib.p8:175 &ubyte r6L = $000e ; source: library:/prog8lib/cx16/syslib.p8:176 &ubyte r7L = $0010 ; source: library:/prog8lib/cx16/syslib.p8:177 &ubyte r8L = $0012 ; source: library:/prog8lib/cx16/syslib.p8:178 &ubyte r9L = $0014 ; source: library:/prog8lib/cx16/syslib.p8:179 &ubyte r10L = $0016 ; source: library:/prog8lib/cx16/syslib.p8:180 &ubyte r11L = $0018 ; source: library:/prog8lib/cx16/syslib.p8:181 &ubyte r12L = $001a ; source: library:/prog8lib/cx16/syslib.p8:182 &ubyte r13L = $001c ; source: library:/prog8lib/cx16/syslib.p8:183 &ubyte r14L = $001e ; source: library:/prog8lib/cx16/syslib.p8:184 &ubyte r15L = $0020 ; source: library:/prog8lib/cx16/syslib.p8:186 &ubyte r0H = $0003 ; source: library:/prog8lib/cx16/syslib.p8:187 &ubyte r1H = $0005 ; source: library:/prog8lib/cx16/syslib.p8:188 &ubyte r2H = $0007 ; source: library:/prog8lib/cx16/syslib.p8:189 &ubyte r3H = $0009 ; source: library:/prog8lib/cx16/syslib.p8:190 &ubyte r4H = $000b ; source: library:/prog8lib/cx16/syslib.p8:191 &ubyte r5H = $000d ; source: library:/prog8lib/cx16/syslib.p8:192 &ubyte r6H = $000f ; source: library:/prog8lib/cx16/syslib.p8:193 &ubyte r7H = $0011 ; source: library:/prog8lib/cx16/syslib.p8:194 &ubyte r8H = $0013 ; source: library:/prog8lib/cx16/syslib.p8:195 &ubyte r9H = $0015 ; source: library:/prog8lib/cx16/syslib.p8:196 &ubyte r10H = $0017 ; source: library:/prog8lib/cx16/syslib.p8:197 &ubyte r11H = $0019 ; source: library:/prog8lib/cx16/syslib.p8:198 &ubyte r12H = $001b ; source: library:/prog8lib/cx16/syslib.p8:199 &ubyte r13H = $001d ; source: library:/prog8lib/cx16/syslib.p8:200 &ubyte r14H = $001f ; source: library:/prog8lib/cx16/syslib.p8:201 &ubyte r15H = $0021 ; source: library:/prog8lib/cx16/syslib.p8:203 &byte r0sL = $0002 ; source: library:/prog8lib/cx16/syslib.p8:204 &byte r1sL = $0004 ; source: library:/prog8lib/cx16/syslib.p8:205 &byte r2sL = $0006 ; source: library:/prog8lib/cx16/syslib.p8:206 &byte r3sL = $0008 ; source: library:/prog8lib/cx16/syslib.p8:207 &byte r4sL = $000a ; source: library:/prog8lib/cx16/syslib.p8:208 &byte r5sL = $000c ; source: library:/prog8lib/cx16/syslib.p8:209 &byte r6sL = $000e ; source: library:/prog8lib/cx16/syslib.p8:210 &byte r7sL = $0010 ; source: library:/prog8lib/cx16/syslib.p8:211 &byte r8sL = $0012 ; source: library:/prog8lib/cx16/syslib.p8:212 &byte r9sL = $0014 ; source: library:/prog8lib/cx16/syslib.p8:213 &byte r10sL = $0016 ; source: library:/prog8lib/cx16/syslib.p8:214 &byte r11sL = $0018 ; source: library:/prog8lib/cx16/syslib.p8:215 &byte r12sL = $001a ; source: library:/prog8lib/cx16/syslib.p8:216 &byte r13sL = $001c ; source: library:/prog8lib/cx16/syslib.p8:217 &byte r14sL = $001e ; source: library:/prog8lib/cx16/syslib.p8:218 &byte r15sL = $0020 ; source: library:/prog8lib/cx16/syslib.p8:220 &byte r0sH = $0003 ; source: library:/prog8lib/cx16/syslib.p8:221 &byte r1sH = $0005 ; source: library:/prog8lib/cx16/syslib.p8:222 &byte r2sH = $0007 ; source: library:/prog8lib/cx16/syslib.p8:223 &byte r3sH = $0009 ; source: library:/prog8lib/cx16/syslib.p8:224 &byte r4sH = $000b ; source: library:/prog8lib/cx16/syslib.p8:225 &byte r5sH = $000d ; source: library:/prog8lib/cx16/syslib.p8:226 &byte r6sH = $000f ; source: library:/prog8lib/cx16/syslib.p8:227 &byte r7sH = $0011 ; source: library:/prog8lib/cx16/syslib.p8:228 &byte r8sH = $0013 ; source: library:/prog8lib/cx16/syslib.p8:229 &byte r9sH = $0015 ; source: library:/prog8lib/cx16/syslib.p8:230 &byte r10sH = $0017 ; source: library:/prog8lib/cx16/syslib.p8:231 &byte r11sH = $0019 ; source: library:/prog8lib/cx16/syslib.p8:232 &byte r12sH = $001b ; source: library:/prog8lib/cx16/syslib.p8:233 &byte r13sH = $001d ; source: library:/prog8lib/cx16/syslib.p8:234 &byte r14sH = $001f ; source: library:/prog8lib/cx16/syslib.p8:235 &byte r15sH = $0021 ; source: library:/prog8lib/cx16/syslib.p8:239 const uword VERA_BASE = $9F20 ; source: library:/prog8lib/cx16/syslib.p8:240 &ubyte VERA_ADDR_L = VERA_BASE + $0000 ; source: library:/prog8lib/cx16/syslib.p8:241 &ubyte VERA_ADDR_M = VERA_BASE + $0001 ; source: library:/prog8lib/cx16/syslib.p8:242 &uword VERA_ADDR = VERA_BASE + $0000 ; still need to do the _H separately ; source: library:/prog8lib/cx16/syslib.p8:243 &ubyte VERA_ADDR_H = VERA_BASE + $0002 ; source: library:/prog8lib/cx16/syslib.p8:244 &ubyte VERA_DATA0 = VERA_BASE + $0003 ; source: library:/prog8lib/cx16/syslib.p8:245 &ubyte VERA_DATA1 = VERA_BASE + $0004 ; source: library:/prog8lib/cx16/syslib.p8:246 &ubyte VERA_CTRL = VERA_BASE + $0005 ; source: library:/prog8lib/cx16/syslib.p8:247 &ubyte VERA_IEN = VERA_BASE + $0006 ; source: library:/prog8lib/cx16/syslib.p8:248 &ubyte VERA_ISR = VERA_BASE + $0007 ; source: library:/prog8lib/cx16/syslib.p8:249 &ubyte VERA_IRQLINE_L = VERA_BASE + $0008 ; write only ; source: library:/prog8lib/cx16/syslib.p8:250 &ubyte VERA_SCANLINE_L = VERA_BASE + $0008 ; read only ; source: library:/prog8lib/cx16/syslib.p8:251 &ubyte VERA_DC_VIDEO = VERA_BASE + $0009 ; DCSEL= 0 ; source: library:/prog8lib/cx16/syslib.p8:252 &ubyte VERA_DC_HSCALE = VERA_BASE + $000A ; DCSEL= 0 ; source: library:/prog8lib/cx16/syslib.p8:253 &ubyte VERA_DC_VSCALE = VERA_BASE + $000B ; DCSEL= 0 ; source: library:/prog8lib/cx16/syslib.p8:254 &ubyte VERA_DC_BORDER = VERA_BASE + $000C ; DCSEL= 0 ; source: library:/prog8lib/cx16/syslib.p8:255 &ubyte VERA_DC_HSTART = VERA_BASE + $0009 ; DCSEL= 1 ; source: library:/prog8lib/cx16/syslib.p8:256 &ubyte VERA_DC_HSTOP = VERA_BASE + $000A ; DCSEL= 1 ; source: library:/prog8lib/cx16/syslib.p8:257 &ubyte VERA_DC_VSTART = VERA_BASE + $000B ; DCSEL= 1 ; source: library:/prog8lib/cx16/syslib.p8:258 &ubyte VERA_DC_VSTOP = VERA_BASE + $000C ; DCSEL= 1 ; source: library:/prog8lib/cx16/syslib.p8:259 &ubyte VERA_DC_VER0 = VERA_BASE + $0009 ; DCSEL=63 ; source: library:/prog8lib/cx16/syslib.p8:260 &ubyte VERA_DC_VER1 = VERA_BASE + $000A ; DCSEL=63 ; source: library:/prog8lib/cx16/syslib.p8:261 &ubyte VERA_DC_VER2 = VERA_BASE + $000B ; DCSEL=63 ; source: library:/prog8lib/cx16/syslib.p8:262 &ubyte VERA_DC_VER3 = VERA_BASE + $000C ; DCSEL=63 ; source: library:/prog8lib/cx16/syslib.p8:263 &ubyte VERA_L0_CONFIG = VERA_BASE + $000D ; source: library:/prog8lib/cx16/syslib.p8:264 &ubyte VERA_L0_MAPBASE = VERA_BASE + $000E ; source: library:/prog8lib/cx16/syslib.p8:265 &ubyte VERA_L0_TILEBASE = VERA_BASE + $000F ; source: library:/prog8lib/cx16/syslib.p8:266 &ubyte VERA_L0_HSCROLL_L = VERA_BASE + $0010 ; source: library:/prog8lib/cx16/syslib.p8:267 &ubyte VERA_L0_HSCROLL_H = VERA_BASE + $0011 ; source: library:/prog8lib/cx16/syslib.p8:268 &uword VERA_L0_HSCROLL = VERA_BASE + $0010 ; source: library:/prog8lib/cx16/syslib.p8:269 &ubyte VERA_L0_VSCROLL_L = VERA_BASE + $0012 ; source: library:/prog8lib/cx16/syslib.p8:270 &ubyte VERA_L0_VSCROLL_H = VERA_BASE + $0013 ; source: library:/prog8lib/cx16/syslib.p8:271 &uword VERA_L0_VSCROLL = VERA_BASE + $0012 ; source: library:/prog8lib/cx16/syslib.p8:272 &ubyte VERA_L1_CONFIG = VERA_BASE + $0014 ; source: library:/prog8lib/cx16/syslib.p8:273 &ubyte VERA_L1_MAPBASE = VERA_BASE + $0015 ; source: library:/prog8lib/cx16/syslib.p8:274 &ubyte VERA_L1_TILEBASE = VERA_BASE + $0016 ; source: library:/prog8lib/cx16/syslib.p8:275 &ubyte VERA_L1_HSCROLL_L = VERA_BASE + $0017 ; source: library:/prog8lib/cx16/syslib.p8:276 &ubyte VERA_L1_HSCROLL_H = VERA_BASE + $0018 ; source: library:/prog8lib/cx16/syslib.p8:277 &uword VERA_L1_HSCROLL = VERA_BASE + $0017 ; source: library:/prog8lib/cx16/syslib.p8:278 &ubyte VERA_L1_VSCROLL_L = VERA_BASE + $0019 ; source: library:/prog8lib/cx16/syslib.p8:279 &ubyte VERA_L1_VSCROLL_H = VERA_BASE + $001A ; source: library:/prog8lib/cx16/syslib.p8:280 &uword VERA_L1_VSCROLL = VERA_BASE + $0019 ; source: library:/prog8lib/cx16/syslib.p8:281 &ubyte VERA_AUDIO_CTRL = VERA_BASE + $001B ; source: library:/prog8lib/cx16/syslib.p8:282 &ubyte VERA_AUDIO_RATE = VERA_BASE + $001C ; source: library:/prog8lib/cx16/syslib.p8:283 &ubyte VERA_AUDIO_DATA = VERA_BASE + $001D ; source: library:/prog8lib/cx16/syslib.p8:284 &ubyte VERA_SPI_DATA = VERA_BASE + $001E ; source: library:/prog8lib/cx16/syslib.p8:285 &ubyte VERA_SPI_CTRL = VERA_BASE + $001F ; source: library:/prog8lib/cx16/syslib.p8:288 &ubyte VERA_FX_CTRL = VERA_BASE + $0009 ; source: library:/prog8lib/cx16/syslib.p8:289 &ubyte VERA_FX_TILEBASE = VERA_BASE + $000a ; source: library:/prog8lib/cx16/syslib.p8:290 &ubyte VERA_FX_MAPBASE = VERA_BASE + $000b ; source: library:/prog8lib/cx16/syslib.p8:291 &ubyte VERA_FX_MULT = VERA_BASE + $000c ; source: library:/prog8lib/cx16/syslib.p8:292 &ubyte VERA_FX_X_INCR_L = VERA_BASE + $0009 ; source: library:/prog8lib/cx16/syslib.p8:293 &ubyte VERA_FX_X_INCR_H = VERA_BASE + $000a ; source: library:/prog8lib/cx16/syslib.p8:294 &uword VERA_FX_X_INCR = VERA_BASE + $0009 ; source: library:/prog8lib/cx16/syslib.p8:295 &ubyte VERA_FX_Y_INCR_L = VERA_BASE + $000b ; source: library:/prog8lib/cx16/syslib.p8:296 &ubyte VERA_FX_Y_INCR_H = VERA_BASE + $000c ; source: library:/prog8lib/cx16/syslib.p8:297 &uword VERA_FX_Y_INCR = VERA_BASE + $000b ; source: library:/prog8lib/cx16/syslib.p8:298 &ubyte VERA_FX_X_POS_L = VERA_BASE + $0009 ; source: library:/prog8lib/cx16/syslib.p8:299 &ubyte VERA_FX_X_POS_H = VERA_BASE + $000a ; source: library:/prog8lib/cx16/syslib.p8:300 &uword VERA_FX_X_POS = VERA_BASE + $0009 ; source: library:/prog8lib/cx16/syslib.p8:301 &ubyte VERA_FX_Y_POS_L = VERA_BASE + $000b ; source: library:/prog8lib/cx16/syslib.p8:302 &ubyte VERA_FX_Y_POS_H = VERA_BASE + $000c ; source: library:/prog8lib/cx16/syslib.p8:303 &uword VERA_FX_Y_POS = VERA_BASE + $000b ; source: library:/prog8lib/cx16/syslib.p8:304 &ubyte VERA_FX_X_POS_S = VERA_BASE + $0009 ; source: library:/prog8lib/cx16/syslib.p8:305 &ubyte VERA_FX_Y_POS_S = VERA_BASE + $000a ; source: library:/prog8lib/cx16/syslib.p8:306 &ubyte VERA_FX_POLY_FILL_L = VERA_BASE + $000b ; source: library:/prog8lib/cx16/syslib.p8:307 &ubyte VERA_FX_POLY_FILL_H = VERA_BASE + $000c ; source: library:/prog8lib/cx16/syslib.p8:308 &uword VERA_FX_POLY_FILL = VERA_BASE + $000b ; source: library:/prog8lib/cx16/syslib.p8:309 &ubyte VERA_FX_CACHE_L = VERA_BASE + $0009 ; source: library:/prog8lib/cx16/syslib.p8:310 &ubyte VERA_FX_CACHE_M = VERA_BASE + $000a ; source: library:/prog8lib/cx16/syslib.p8:311 &ubyte VERA_FX_CACHE_H = VERA_BASE + $000b ; source: library:/prog8lib/cx16/syslib.p8:312 &ubyte VERA_FX_CACHE_U = VERA_BASE + $000c ; source: library:/prog8lib/cx16/syslib.p8:313 &ubyte VERA_FX_ACCUM = VERA_BASE + $000a ; source: library:/prog8lib/cx16/syslib.p8:314 &ubyte VERA_FX_ACCUM_RESET = VERA_BASE + $0009 ; source: library:/prog8lib/cx16/syslib.p8:323 const uword VIA1_BASE = $9f00 ;VIA 6522 #1 ; source: library:/prog8lib/cx16/syslib.p8:324 &ubyte via1prb = VIA1_BASE + 0 ; source: library:/prog8lib/cx16/syslib.p8:325 &ubyte via1pra = VIA1_BASE + 1 ; source: library:/prog8lib/cx16/syslib.p8:326 &ubyte via1ddrb = VIA1_BASE + 2 ; source: library:/prog8lib/cx16/syslib.p8:327 &ubyte via1ddra = VIA1_BASE + 3 ; source: library:/prog8lib/cx16/syslib.p8:328 &ubyte via1t1l = VIA1_BASE + 4 ; source: library:/prog8lib/cx16/syslib.p8:329 &ubyte via1t1h = VIA1_BASE + 5 ; source: library:/prog8lib/cx16/syslib.p8:330 &ubyte via1t1ll = VIA1_BASE + 6 ; source: library:/prog8lib/cx16/syslib.p8:331 &ubyte via1t1lh = VIA1_BASE + 7 ; source: library:/prog8lib/cx16/syslib.p8:332 &ubyte via1t2l = VIA1_BASE + 8 ; source: library:/prog8lib/cx16/syslib.p8:333 &ubyte via1t2h = VIA1_BASE + 9 ; source: library:/prog8lib/cx16/syslib.p8:334 &ubyte via1sr = VIA1_BASE + 10 ; source: library:/prog8lib/cx16/syslib.p8:335 &ubyte via1acr = VIA1_BASE + 11 ; source: library:/prog8lib/cx16/syslib.p8:336 &ubyte via1pcr = VIA1_BASE + 12 ; source: library:/prog8lib/cx16/syslib.p8:337 &ubyte via1ifr = VIA1_BASE + 13 ; source: library:/prog8lib/cx16/syslib.p8:338 &ubyte via1ier = VIA1_BASE + 14 ; source: library:/prog8lib/cx16/syslib.p8:339 &ubyte via1ora = VIA1_BASE + 15 ; source: library:/prog8lib/cx16/syslib.p8:341 const uword VIA2_BASE = $9f10 ;VIA 6522 #2 ; source: library:/prog8lib/cx16/syslib.p8:342 &ubyte via2prb = VIA2_BASE + 0 ; source: library:/prog8lib/cx16/syslib.p8:343 &ubyte via2pra = VIA2_BASE + 1 ; source: library:/prog8lib/cx16/syslib.p8:344 &ubyte via2ddrb = VIA2_BASE + 2 ; source: library:/prog8lib/cx16/syslib.p8:345 &ubyte via2ddra = VIA2_BASE + 3 ; source: library:/prog8lib/cx16/syslib.p8:346 &ubyte via2t1l = VIA2_BASE + 4 ; source: library:/prog8lib/cx16/syslib.p8:347 &ubyte via2t1h = VIA2_BASE + 5 ; source: library:/prog8lib/cx16/syslib.p8:348 &ubyte via2t1ll = VIA2_BASE + 6 ; source: library:/prog8lib/cx16/syslib.p8:349 &ubyte via2t1lh = VIA2_BASE + 7 ; source: library:/prog8lib/cx16/syslib.p8:350 &ubyte via2t2l = VIA2_BASE + 8 ; source: library:/prog8lib/cx16/syslib.p8:351 &ubyte via2t2h = VIA2_BASE + 9 ; source: library:/prog8lib/cx16/syslib.p8:352 &ubyte via2sr = VIA2_BASE + 10 ; source: library:/prog8lib/cx16/syslib.p8:353 &ubyte via2acr = VIA2_BASE + 11 ; source: library:/prog8lib/cx16/syslib.p8:354 &ubyte via2pcr = VIA2_BASE + 12 ; source: library:/prog8lib/cx16/syslib.p8:355 &ubyte via2ifr = VIA2_BASE + 13 ; source: library:/prog8lib/cx16/syslib.p8:356 &ubyte via2ier = VIA2_BASE + 14 ; source: library:/prog8lib/cx16/syslib.p8:357 &ubyte via2ora = VIA2_BASE + 15 ; source: library:/prog8lib/cx16/syslib.p8:360 &ubyte YM_ADDRESS = $9f40 ; source: library:/prog8lib/cx16/syslib.p8:361 &ubyte YM_DATA = $9f41 ; source: library:/prog8lib/cx16/syslib.p8:363 const uword extdev = $9f60 ; source: library:/prog8lib/cx16/syslib.p8:95 cx16 { ; source: library:/prog8lib/cx16/syslib.p8:370 romsub $ff4a = CLOSE_ALL(ubyte device @A) clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:371 romsub $ff59 = LKUPLA(ubyte la @A) clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:372 romsub $ff5c = LKUPSA(ubyte sa @Y) clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:373 romsub $ff5f = screen_mode(ubyte mode @A, bool getCurrent @Pc) clobbers(X, Y) -> ubyte @A, bool @Pc ; note: X,Y size result is not supported, use SCREEN or get_screen_mode routine for that ; source: library:/prog8lib/cx16/syslib.p8:374 romsub $ff62 = screen_set_charset(ubyte charset @A, uword charsetptr @XY) clobbers(A,X,Y) ; incompatible with C128 dlchr() ; source: library:/prog8lib/cx16/syslib.p8:376 romsub $ff6e = JSRFAR() ; following word = address to call, byte after that=rom/ram bank it is in ; source: library:/prog8lib/cx16/syslib.p8:377 romsub $ff74 = fetch(ubyte bank @X, ubyte index @Y) clobbers(X) -> ubyte @A ; source: library:/prog8lib/cx16/syslib.p8:378 romsub $ff77 = stash(ubyte data @A, ubyte bank @X, ubyte index @Y) clobbers(X) ; source: library:/prog8lib/cx16/syslib.p8:379 romsub $ff7d = PRIMM() ; source: library:/prog8lib/cx16/syslib.p8:384 romsub $ff20 = GRAPH_init(uword vectors @R0) clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:385 romsub $ff23 = GRAPH_clear() clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:386 romsub $ff26 = GRAPH_set_window(uword x @R0, uword y @R1, uword width @R2, uword height @R3) clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:387 romsub $ff29 = GRAPH_set_colors(ubyte stroke @A, ubyte fill @X, ubyte background @Y) clobbers (A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:388 romsub $ff2c = GRAPH_draw_line(uword x1 @R0, uword y1 @R1, uword x2 @R2, uword y2 @R3) clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:389 romsub $ff2f = GRAPH_draw_rect(uword x @R0, uword y @R1, uword width @R2, uword height @R3, uword cornerradius @R4, bool fill @Pc) clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:390 romsub $ff32 = GRAPH_move_rect(uword sx @R0, uword sy @R1, uword tx @R2, uword ty @R3, uword width @R4, uword height @R5) clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:391 romsub $ff35 = GRAPH_draw_oval(uword x @R0, uword y @R1, uword width @R2, uword height @R3, bool fill @Pc) clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:392 romsub $ff38 = GRAPH_draw_image(uword x @R0, uword y @R1, uword ptr @R2, uword width @R3, uword height @R4) clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:393 romsub $ff3b = GRAPH_set_font(uword fontptr @R0) clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:394 romsub $ff3e = GRAPH_get_char_size(ubyte baseline @A, ubyte width @X, ubyte height_or_style @Y, bool is_control @Pc) clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:395 romsub $ff41 = GRAPH_put_char(uword x @R0, uword y @R1, ubyte character @A) clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:396 romsub $ff41 = GRAPH_put_next_char(ubyte character @A) clobbers(A,X,Y) ; alias for the routine above that doesn't reset the position of the initial character ; source: library:/prog8lib/cx16/syslib.p8:399 romsub $fef6 = FB_init() clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:400 romsub $fef9 = FB_get_info() clobbers(X,Y) -> byte @A, uword @R0, uword @R1 ; width=r0, height=r1 ; source: library:/prog8lib/cx16/syslib.p8:401 romsub $fefc = FB_set_palette(uword pointer @R0, ubyte index @A, ubyte colorcount @X) clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:402 romsub $feff = FB_cursor_position(uword x @R0, uword y @R1) clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:403 romsub $ff02 = FB_cursor_next_line(uword x @R0) clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:404 romsub $ff05 = FB_get_pixel() clobbers(X,Y) -> ubyte @A ; source: library:/prog8lib/cx16/syslib.p8:405 romsub $ff08 = FB_get_pixels(uword pointer @R0, uword count @R1) clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:406 romsub $ff0b = FB_set_pixel(ubyte color @A) clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:407 romsub $ff0e = FB_set_pixels(uword pointer @R0, uword count @R1) clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:408 romsub $ff11 = FB_set_8_pixels(ubyte pattern @A, ubyte color @X) clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:409 romsub $ff14 = FB_set_8_pixels_opaque(ubyte pattern @R0, ubyte mask @A, ubyte color1 @X, ubyte color2 @Y) clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:410 romsub $ff17 = FB_fill_pixels(uword count @R0, uword pstep @R1, ubyte color @A) clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:411 romsub $ff1a = FB_filter_pixels(uword pointer @ R0, uword count @R1) clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:412 romsub $ff1d = FB_move_pixels(uword sx @R0, uword sy @R1, uword tx @R2, uword ty @R3, uword count @R4) clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:415 romsub $FEBA = BSAVE(ubyte zp_startaddr @ A, uword endaddr @ XY) clobbers (X, Y) -> bool @ Pc, ubyte @ A ; like cbm.SAVE, but omits the 2-byte prg header ; source: library:/prog8lib/cx16/syslib.p8:416 romsub $fec6 = i2c_read_byte(ubyte device @X, ubyte offset @Y) clobbers (X,Y) -> ubyte @A, bool @Pc ; source: library:/prog8lib/cx16/syslib.p8:417 romsub $fec9 = i2c_write_byte(ubyte device @X, ubyte offset @Y, ubyte data @A) clobbers (A,X,Y) -> bool @Pc ; source: library:/prog8lib/cx16/syslib.p8:418 romsub $fef0 = sprite_set_image(uword pixels @R0, uword mask @R1, ubyte bpp @R2, ubyte number @A, ubyte width @X, ubyte height @Y, bool apply_mask @Pc) clobbers(A,X,Y) -> bool @Pc ; source: library:/prog8lib/cx16/syslib.p8:419 romsub $fef3 = sprite_set_position(uword x @R0, uword y @R1, ubyte number @A) clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:420 romsub $fee4 = memory_fill(uword address @R0, uword num_bytes @R1, ubyte value @A) clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:421 romsub $fee7 = memory_copy(uword source @R0, uword target @R1, uword num_bytes @R2) clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:422 romsub $feea = memory_crc(uword address @R0, uword num_bytes @R1) clobbers(A,X,Y) -> uword @R2 ; source: library:/prog8lib/cx16/syslib.p8:423 romsub $feed = memory_decompress(uword input @R0, uword output @R1) clobbers(A,X,Y) -> uword @R1 ; last address +1 is result in R1 ; source: library:/prog8lib/cx16/syslib.p8:424 romsub $fedb = console_init(uword x @R0, uword y @R1, uword width @R2, uword height @R3) clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:425 romsub $fede = console_put_char(ubyte character @A, bool wrapping @Pc) clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:426 romsub $fee1 = console_get_char() clobbers(X,Y) -> ubyte @A ; source: library:/prog8lib/cx16/syslib.p8:427 romsub $fed8 = console_put_image(uword pointer @R0, uword width @R1, uword height @R2) clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:428 romsub $fed5 = console_set_paging_message(uword msgptr @R0) clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:429 romsub $fecf = entropy_get() -> ubyte @A, ubyte @X, ubyte @Y ; source: library:/prog8lib/cx16/syslib.p8:430 romsub $fecc = monitor() clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:432 romsub $ff44 = MACPTR(ubyte length @A, uword buffer @XY, bool dontAdvance @Pc) clobbers(A) -> bool @Pc, uword @XY ; source: library:/prog8lib/cx16/syslib.p8:433 romsub $feb1 = MCIOUT(ubyte length @A, uword buffer @XY, bool dontAdvance @Pc) clobbers(A) -> bool @Pc, uword @XY ; source: library:/prog8lib/cx16/syslib.p8:434 romsub $ff47 = enter_basic(bool cold_or_warm @Pc) clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:435 romsub $ff4d = clock_set_date_time(uword yearmonth @R0, uword dayhours @R1, uword minsecs @R2, uword jiffiesweekday @R3) clobbers(A, X, Y) ; source: library:/prog8lib/cx16/syslib.p8:436 romsub $ff50 = clock_get_date_time() clobbers(A, X, Y) -> uword @R0, uword @R1, uword @R2, uword @R3 ; result registers see clock_set_date_time() ; source: library:/prog8lib/cx16/syslib.p8:440 romsub $febd = kbdbuf_peek() -> ubyte @A, ubyte @X ; key in A, queue length in X ; source: library:/prog8lib/cx16/syslib.p8:441 romsub $febd = kbdbuf_peek2() -> uword @AX ; alternative to above to not have the hassle to deal with multiple return values ; source: library:/prog8lib/cx16/syslib.p8:442 romsub $fec0 = kbdbuf_get_modifiers() -> ubyte @A ; source: library:/prog8lib/cx16/syslib.p8:443 romsub $fec3 = kbdbuf_put(ubyte key @A) clobbers(X) ; source: library:/prog8lib/cx16/syslib.p8:444 romsub $fed2 = keymap(uword identifier @XY, bool read @Pc) -> bool @Pc ; source: library:/prog8lib/cx16/syslib.p8:445 romsub $ff68 = mouse_config(byte shape @A, ubyte resX @X, ubyte resY @Y) clobbers (A, X, Y) ; source: library:/prog8lib/cx16/syslib.p8:446 romsub $ff6b = mouse_get(ubyte zpdataptr @X) -> ubyte @A ; source: library:/prog8lib/cx16/syslib.p8:447 romsub $ff71 = mouse_scan() clobbers(A, X, Y) ; source: library:/prog8lib/cx16/syslib.p8:448 romsub $ff53 = joystick_scan() clobbers(A, X, Y) ; source: library:/prog8lib/cx16/syslib.p8:449 romsub $ff56 = joystick_get(ubyte joynr @A) -> ubyte @A, ubyte @X, ubyte @Y ; source: library:/prog8lib/cx16/syslib.p8:450 romsub $ff56 = joystick_get2(ubyte joynr @A) clobbers(Y) -> uword @AX ; alternative to above to not have the hassle to deal with multiple return values ; source: library:/prog8lib/cx16/syslib.p8:453 romsub $C000 = x16edit_default() clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:454 romsub $C003 = x16edit_loadfile(ubyte firstbank @X, ubyte lastbank @Y, str filename @R0, ubyte filenameLength @R1) clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:455 romsub $C006 = x16edit_loadfile_options(ubyte firstbank @X, ubyte lastbank @Y, str filename @R0, ; source: library:/prog8lib/cx16/syslib.p8:460 romsub $C09F = audio_init() clobbers(A,X,Y) -> bool @Pc ; (re)initialize both vera PSG and YM audio chips ; source: library:/prog8lib/cx16/syslib.p8:461 romsub $C000 = bas_fmfreq(ubyte channel @A, uword freq @XY, bool noretrigger @Pc) clobbers(A,X,Y) -> bool @Pc ; source: library:/prog8lib/cx16/syslib.p8:462 romsub $C003 = bas_fmnote(ubyte channel @A, ubyte note @X, ubyte fracsemitone @Y, bool noretrigger @Pc) clobbers(A,X,Y) -> bool @Pc ; source: library:/prog8lib/cx16/syslib.p8:463 romsub $C006 = bas_fmplaystring(ubyte length @A, str string @XY) clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:464 romsub $C009 = bas_fmvib(ubyte speed @A, ubyte depth @X) clobbers(A,X,Y) -> bool @Pc ; source: library:/prog8lib/cx16/syslib.p8:465 romsub $C00C = bas_playstringvoice(ubyte channel @A) clobbers(Y) ; source: library:/prog8lib/cx16/syslib.p8:466 romsub $C00F = bas_psgfreq(ubyte voice @A, uword freq @XY) clobbers(A,X,Y) -> bool @Pc ; source: library:/prog8lib/cx16/syslib.p8:467 romsub $C012 = bas_psgnote(ubyte voice @A, ubyte note @X, ubyte fracsemitone @Y) clobbers(A,X,Y) -> bool @Pc ; source: library:/prog8lib/cx16/syslib.p8:468 romsub $C015 = bas_psgwav(ubyte voice @A, ubyte waveform @X) clobbers(A,X,Y) -> bool @Pc ; source: library:/prog8lib/cx16/syslib.p8:469 romsub $C018 = bas_psgplaystring(ubyte length @A, str string @XY) clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:470 romsub $C08D = bas_fmchordstring(ubyte length @A, str string @XY) clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:471 romsub $C090 = bas_psgchordstring(ubyte length @A, str string @XY) clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:472 romsub $C01B = notecon_bas2fm(ubyte note @X) clobbers(A) -> ubyte @X, bool @Pc ; source: library:/prog8lib/cx16/syslib.p8:473 romsub $C01E = notecon_bas2midi(ubyte note @X) clobbers(A) -> ubyte @X, bool @Pc ; source: library:/prog8lib/cx16/syslib.p8:474 romsub $C021 = notecon_bas2psg(ubyte note @X, ubyte fracsemitone @Y) clobbers(A) -> uword @XY, bool @Pc ; source: library:/prog8lib/cx16/syslib.p8:475 romsub $C024 = notecon_fm2bas(ubyte note @X) clobbers(A) -> ubyte @X, bool @Pc ; source: library:/prog8lib/cx16/syslib.p8:476 romsub $C027 = notecon_fm2midi(ubyte note @X) clobbers(A) -> ubyte @X, bool @Pc ; source: library:/prog8lib/cx16/syslib.p8:477 romsub $C02A = notecon_fm2psg(ubyte note @X, ubyte fracsemitone @Y) clobbers(A) -> uword @XY, bool @Pc ; source: library:/prog8lib/cx16/syslib.p8:478 romsub $C02D = notecon_freq2bas(uword freqHz @XY) clobbers(A) -> ubyte @X, ubyte @Y, bool @Pc ; source: library:/prog8lib/cx16/syslib.p8:479 romsub $C030 = notecon_freq2fm(uword freqHz @XY) clobbers(A) -> ubyte @X, ubyte @Y, bool @Pc ; source: library:/prog8lib/cx16/syslib.p8:480 romsub $C033 = notecon_freq2midi(uword freqHz @XY) clobbers(A) -> ubyte @X, ubyte @Y, bool @Pc ; source: library:/prog8lib/cx16/syslib.p8:481 romsub $C036 = notecon_freq2psg(uword freqHz @XY) clobbers(A) -> uword @XY, bool @Pc ; source: library:/prog8lib/cx16/syslib.p8:482 romsub $C039 = notecon_midi2bas(ubyte note @X) clobbers(A) -> ubyte @X, bool @Pc ; source: library:/prog8lib/cx16/syslib.p8:483 romsub $C03C = notecon_midi2fm(ubyte note @X) clobbers(A) -> ubyte @X, bool @Pc ; source: library:/prog8lib/cx16/syslib.p8:484 romsub $C03F = notecon_midi2psg(ubyte note @X, ubyte fracsemitone @Y) clobbers(A) -> uword @XY, bool @Pc ; source: library:/prog8lib/cx16/syslib.p8:485 romsub $C042 = notecon_psg2bas(uword freq @XY) clobbers(A) -> ubyte @X, ubyte @Y, bool @Pc ; source: library:/prog8lib/cx16/syslib.p8:486 romsub $C045 = notecon_psg2fm(uword freq @XY) clobbers(A) -> ubyte @X, ubyte @Y, bool @Pc ; source: library:/prog8lib/cx16/syslib.p8:487 romsub $C048 = notecon_psg2midi(uword freq @XY) clobbers(A) -> ubyte @X, ubyte @Y, bool @Pc ; source: library:/prog8lib/cx16/syslib.p8:488 romsub $C04B = psg_init() clobbers(A,X,Y) ; (re)init Vera PSG ; source: library:/prog8lib/cx16/syslib.p8:489 romsub $C04E = psg_playfreq(ubyte voice @A, uword freq @XY) clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:490 romsub $C051 = psg_read(ubyte offset @X, bool cookedVol @Pc) clobbers(Y) -> ubyte @A ; source: library:/prog8lib/cx16/syslib.p8:491 romsub $C054 = psg_setatten(ubyte voice @A, ubyte attenuation @X) clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:492 romsub $C057 = psg_setfreq(ubyte voice @A, uword freq @XY) clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:493 romsub $C05A = psg_setpan(ubyte voice @A, ubyte panning @X) clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:494 romsub $C05D = psg_setvol(ubyte voice @A, ubyte volume @X) clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:495 romsub $C060 = psg_write(ubyte value @A, ubyte offset @X) clobbers(Y) ; source: library:/prog8lib/cx16/syslib.p8:496 romsub $C0A2 = psg_write_fast(ubyte value @A, ubyte offset @X) clobbers(Y) ; source: library:/prog8lib/cx16/syslib.p8:497 romsub $C093 = psg_getatten(ubyte voice @A) clobbers(Y) -> ubyte @X ; source: library:/prog8lib/cx16/syslib.p8:498 romsub $C096 = psg_getpan(ubyte voice @A) clobbers(Y) -> ubyte @X ; source: library:/prog8lib/cx16/syslib.p8:499 romsub $C063 = ym_init() clobbers(A,X,Y) -> bool @Pc ; (re)init YM chip ; source: library:/prog8lib/cx16/syslib.p8:500 romsub $C066 = ym_loaddefpatches() clobbers(A,X,Y) -> bool @Pc ; load default YM patches ; source: library:/prog8lib/cx16/syslib.p8:501 romsub $C069 = ym_loadpatch(ubyte channel @A, uword patchOrAddress @XY, bool what @Pc) clobbers(A,X,Y) ; source: library:/prog8lib/cx16/syslib.p8:502 romsub $C06C = ym_loadpatchlfn(ubyte channel @A, ubyte lfn @X) clobbers(X,Y) -> ubyte @A, bool @Pc ; source: library:/prog8lib/cx16/syslib.p8:503 romsub $C06F = ym_playdrum(ubyte channel @A, ubyte note @X) clobbers(A,X,Y) -> bool @Pc ; source: library:/prog8lib/cx16/syslib.p8:504 romsub $C072 = ym_playnote(ubyte channel @A, ubyte kc @X, ubyte kf @Y, bool notrigger @Pc) clobbers(A,X,Y) -> bool @Pc ; source: library:/prog8lib/cx16/syslib.p8:505 romsub $C075 = ym_setatten(ubyte channel @A, ubyte attenuation @X) clobbers(Y) -> bool @Pc ; source: library:/prog8lib/cx16/syslib.p8:506 romsub $C078 = ym_setdrum(ubyte channel @A, ubyte note @X) clobbers(A,X,Y) -> bool @Pc ; source: library:/prog8lib/cx16/syslib.p8:507 romsub $C07B = ym_setnote(ubyte channel @A, ubyte kc @X, ubyte kf @Y) clobbers(A,X,Y) -> bool @Pc ; source: library:/prog8lib/cx16/syslib.p8:508 romsub $C07E = ym_setpan(ubyte channel @A, ubyte panning @X) clobbers(A,X,Y) -> bool @Pc ; source: library:/prog8lib/cx16/syslib.p8:509 romsub $C081 = ym_read(ubyte register @X, bool cooked @Pc) clobbers(Y) -> ubyte @A, bool @Pc ; source: library:/prog8lib/cx16/syslib.p8:510 romsub $C084 = ym_release(ubyte channel @A) clobbers(A,X,Y) -> bool @Pc ; source: library:/prog8lib/cx16/syslib.p8:511 romsub $C087 = ym_trigger(ubyte channel @A, bool noRelease @Pc) clobbers(A,X,Y) -> bool @Pc ; source: library:/prog8lib/cx16/syslib.p8:512 romsub $C08A = ym_write(ubyte value @A, ubyte register @X) clobbers(Y) -> bool @Pc ; source: library:/prog8lib/cx16/syslib.p8:513 romsub $C099 = ym_getatten(ubyte channel @A) clobbers(Y) -> ubyte @X ; source: library:/prog8lib/cx16/syslib.p8:514 romsub $C09C = ym_getpan(ubyte channel @A) clobbers(Y) -> ubyte @X ; source: library:/prog8lib/cx16/syslib.p8:515 romsub $C0A5 = ym_get_chip_type() clobbers(X) -> ubyte @A ; source: library:/prog8lib/cx16/syslib.p8:518 asmsub set_screen_mode(ubyte mode @A) clobbers(A,X,Y) -> bool @Pc { set_screen_mode .proc ; source: library:/prog8lib/cx16/syslib.p8:520 %asm {{ clc jmp screen_mode .pend ; source: library:/prog8lib/cx16/syslib.p8:526 asmsub get_screen_mode() -> byte @A, byte @X, byte @Y { get_screen_mode .proc ; source: library:/prog8lib/cx16/syslib.p8:531 %asm {{ sec jmp screen_mode .pend ; source: library:/prog8lib/cx16/syslib.p8:537 asmsub kbdbuf_clear() { kbdbuf_clear .proc ; source: library:/prog8lib/cx16/syslib.p8:539 %asm {{ - jsr cbm.GETIN bne - rts .pend ; source: library:/prog8lib/cx16/syslib.p8:546 asmsub mouse_config2(byte shape @A) clobbers (A, X, Y) { mouse_config2 .proc ; source: library:/prog8lib/cx16/syslib.p8:548 %asm {{ pha ; save shape sec jsr cx16.screen_mode ; set current screen mode and res in A, X, Y pla ; get shape back jmp cx16.mouse_config .pend ; source: library:/prog8lib/cx16/syslib.p8:557 asmsub mouse_pos() clobbers(X) -> ubyte @A { mouse_pos .proc ; source: library:/prog8lib/cx16/syslib.p8:560 %asm {{ ldx #cx16.r0 jmp cx16.mouse_get .pend ; source: library:/prog8lib/cx16/syslib.p8:572 inline asmsub rombank(ubyte bank @A) { ; source: library:/prog8lib/cx16/syslib.p8:579 inline asmsub rambank(ubyte bank @A) { ; source: library:/prog8lib/cx16/syslib.p8:586 inline asmsub getrombank() -> ubyte @A { ; source: library:/prog8lib/cx16/syslib.p8:593 inline asmsub getrambank() -> ubyte @A { ; source: library:/prog8lib/cx16/syslib.p8:600 asmsub numbanks() clobbers(X) -> uword @AY { numbanks .proc ; source: library:/prog8lib/cx16/syslib.p8:607 %asm {{ sec jsr cbm.MEMTOP ldy #0 cmp #0 bne + iny + rts .pend ; source: library:/prog8lib/cx16/syslib.p8:618 asmsub vpeek(ubyte bank @A, uword address @XY) -> ubyte @A { vpeek .proc ; source: library:/prog8lib/cx16/syslib.p8:621 %asm {{ stz cx16.VERA_CTRL sta cx16.VERA_ADDR_H sty cx16.VERA_ADDR_M stx cx16.VERA_ADDR_L lda cx16.VERA_DATA0 rts .pend ; source: library:/prog8lib/cx16/syslib.p8:631 asmsub vaddr(ubyte bank @A, uword address @R0, ubyte addrsel @R1, byte autoIncrOrDecrByOne @Y) clobbers(A) { vaddr .proc ; source: library:/prog8lib/cx16/syslib.p8:635 %asm {{ pha lda cx16.r1 and #1 sta cx16.VERA_CTRL lda cx16.r0 sta cx16.VERA_ADDR_L lda cx16.r0+1 sta cx16.VERA_ADDR_M pla cpy #0 bmi ++ beq + ora #%00010000 + sta cx16.VERA_ADDR_H rts + ora #%00011000 sta cx16.VERA_ADDR_H rts .pend ; source: library:/prog8lib/cx16/syslib.p8:657 asmsub vaddr_clone(ubyte port @A) clobbers (A,X,Y) { vaddr_clone .proc ; source: library:/prog8lib/cx16/syslib.p8:659 %asm {{ sta VERA_CTRL ldx VERA_ADDR_L ldy VERA_ADDR_H phy ldy VERA_ADDR_M eor #1 sta VERA_CTRL stx VERA_ADDR_L sty VERA_ADDR_M ply sty VERA_ADDR_H eor #1 sta VERA_CTRL rts .pend ; source: library:/prog8lib/cx16/syslib.p8:677 asmsub vaddr_autoincr(ubyte bank @A, uword address @R0, ubyte addrsel @R1, uword autoIncrAmount @R2) clobbers(A,Y) { vaddr_autoincr .proc ; source: library:/prog8lib/cx16/syslib.p8:681 %asm {{ jsr _setup lda cx16.r2H ora cx16.r2L beq + jsr _determine_incr_bits + ora P8ZP_SCRATCH_REG sta cx16.VERA_ADDR_H rts _setup sta P8ZP_SCRATCH_REG lda cx16.r1 and #1 sta cx16.VERA_CTRL lda cx16.r0 sta cx16.VERA_ADDR_L lda cx16.r0+1 sta cx16.VERA_ADDR_M rts _determine_incr_bits lda cx16.r2H bne _large lda cx16.r2L ldy #13 - cmp _strides_lsb,y beq + dey bpl - + tya asl a asl a asl a asl a rts _large ora cx16.r2L cmp #1 ; 256 bne + lda #9<<4 rts + cmp #2 ; 512 bne + lda #10<<4 rts + cmp #65 ; 320 bne + lda #14<<4 rts + cmp #130 ; 640 bne + lda #15<<4 rts + lda #0 rts _strides_lsb .byte 0,1,2,4,8,16,32,64,128,255,255,40,80,160,255,255 .pend ; source: library:/prog8lib/cx16/syslib.p8:739 asmsub vaddr_autodecr(ubyte bank @A, uword address @R0, ubyte addrsel @R1, uword autoDecrAmount @R2) clobbers(A,Y) { vaddr_autodecr .proc ; source: library:/prog8lib/cx16/syslib.p8:743 %asm {{ jsr vaddr_autoincr._setup lda cx16.r2H ora cx16.r2L beq + jsr vaddr_autoincr._determine_incr_bits ora #%00001000 ; autodecrement + ora P8ZP_SCRATCH_REG sta cx16.VERA_ADDR_H rts .pend ; source: library:/prog8lib/cx16/syslib.p8:756 asmsub vpoke(ubyte bank @A, uword address @R0, ubyte value @Y) clobbers(A) { vpoke .proc ; source: library:/prog8lib/cx16/syslib.p8:759 %asm {{ stz cx16.VERA_CTRL sta cx16.VERA_ADDR_H lda cx16.r0 sta cx16.VERA_ADDR_L lda cx16.r0+1 sta cx16.VERA_ADDR_M sty cx16.VERA_DATA0 rts .pend ; source: library:/prog8lib/cx16/syslib.p8:771 asmsub vpoke_or(ubyte bank @A, uword address @R0, ubyte value @Y) clobbers (A) { vpoke_or .proc ; source: library:/prog8lib/cx16/syslib.p8:774 %asm {{ stz cx16.VERA_CTRL sta cx16.VERA_ADDR_H lda cx16.r0 sta cx16.VERA_ADDR_L lda cx16.r0+1 sta cx16.VERA_ADDR_M tya ora cx16.VERA_DATA0 sta cx16.VERA_DATA0 rts .pend ; source: library:/prog8lib/cx16/syslib.p8:788 asmsub vpoke_and(ubyte bank @A, uword address @R0, ubyte value @Y) clobbers(A) { vpoke_and .proc ; source: library:/prog8lib/cx16/syslib.p8:791 %asm {{ stz cx16.VERA_CTRL sta cx16.VERA_ADDR_H lda cx16.r0 sta cx16.VERA_ADDR_L lda cx16.r0+1 sta cx16.VERA_ADDR_M tya and cx16.VERA_DATA0 sta cx16.VERA_DATA0 rts .pend ; source: library:/prog8lib/cx16/syslib.p8:805 asmsub vpoke_xor(ubyte bank @A, uword address @R0, ubyte value @Y) clobbers (A) { vpoke_xor .proc ; source: library:/prog8lib/cx16/syslib.p8:808 %asm {{ stz cx16.VERA_CTRL sta cx16.VERA_ADDR_H lda cx16.r0 sta cx16.VERA_ADDR_L lda cx16.r0+1 sta cx16.VERA_ADDR_M tya eor cx16.VERA_DATA0 sta cx16.VERA_DATA0 rts .pend ; source: library:/prog8lib/cx16/syslib.p8:822 asmsub vpoke_mask(ubyte bank @A, uword address @R0, ubyte mask @X, ubyte value @Y) clobbers (A) { vpoke_mask .proc ; source: library:/prog8lib/cx16/syslib.p8:825 %asm {{ sty P8ZP_SCRATCH_B1 stz cx16.VERA_CTRL sta cx16.VERA_ADDR_H lda cx16.r0 sta cx16.VERA_ADDR_L lda cx16.r0+1 sta cx16.VERA_ADDR_M txa and cx16.VERA_DATA0 ora P8ZP_SCRATCH_B1 sta cx16.VERA_DATA0 rts .pend ; source: library:/prog8lib/cx16/syslib.p8:841 asmsub save_virtual_registers() clobbers(A,Y) { save_virtual_registers .proc ; source: library:/prog8lib/cx16/syslib.p8:842 %asm {{ ldy #31 - lda cx16.r0,y sta _cx16_vreg_storage,y dey bpl - rts _cx16_vreg_storage .word 0,0,0,0,0,0,0,0 .word 0,0,0,0,0,0,0,0 .pend ; source: library:/prog8lib/cx16/syslib.p8:856 asmsub restore_virtual_registers() clobbers(A,Y) { restore_virtual_registers .proc ; source: library:/prog8lib/cx16/syslib.p8:857 %asm {{ ldy #31 - lda save_virtual_registers._cx16_vreg_storage,y sta cx16.r0,y dey bpl - rts .pend ; source: library:/prog8lib/cx16/syslib.p8:868 asmsub save_vera_context() clobbers(A) { save_vera_context .proc ; source: library:/prog8lib/cx16/syslib.p8:870 %asm {{ ; note cannot store this on cpu hardware stack because this gets called as a subroutine lda cx16.VERA_ADDR_L sta _vera_storage lda cx16.VERA_ADDR_M sta _vera_storage+1 lda cx16.VERA_ADDR_H sta _vera_storage+2 lda cx16.VERA_CTRL sta _vera_storage+3 eor #1 sta _vera_storage+7 sta cx16.VERA_CTRL lda cx16.VERA_ADDR_L sta _vera_storage+4 lda cx16.VERA_ADDR_M sta _vera_storage+5 lda cx16.VERA_ADDR_H sta _vera_storage+6 rts _vera_storage: .byte 0,0,0,0,0,0,0,0 .pend ; source: library:/prog8lib/cx16/syslib.p8:894 asmsub restore_vera_context() clobbers(A) { restore_vera_context .proc ; source: library:/prog8lib/cx16/syslib.p8:896 %asm {{ lda cx16.save_vera_context._vera_storage+7 sta cx16.VERA_CTRL lda cx16.save_vera_context._vera_storage+6 sta cx16.VERA_ADDR_H lda cx16.save_vera_context._vera_storage+5 sta cx16.VERA_ADDR_M lda cx16.save_vera_context._vera_storage+4 sta cx16.VERA_ADDR_L lda cx16.save_vera_context._vera_storage+3 sta cx16.VERA_CTRL lda cx16.save_vera_context._vera_storage+2 sta cx16.VERA_ADDR_H lda cx16.save_vera_context._vera_storage+1 sta cx16.VERA_ADDR_M lda cx16.save_vera_context._vera_storage+0 sta cx16.VERA_ADDR_L rts .pend ; source: library:/prog8lib/cx16/syslib.p8:918 asmsub set_chrin_keyhandler(ubyte handlerbank @A, uword handler @XY) clobbers(A) { set_chrin_keyhandler .proc ; source: library:/prog8lib/cx16/syslib.p8:921 %asm {{ sei sta P8ZP_SCRATCH_REG lda $00 pha stz $00 lda P8ZP_SCRATCH_REG sta cx16.edkeybk stx cx16.edkeyvec sty cx16.edkeyvec+1 pla sta $00 cli rts .pend ; source: library:/prog8lib/cx16/syslib.p8:938 asmsub get_chrin_keyhandler() -> ubyte @R0, uword @R1 { get_chrin_keyhandler .proc ; source: library:/prog8lib/cx16/syslib.p8:940 %asm {{ sei lda $00 pha stz $00 lda cx16.edkeybk sta cx16.r0L lda cx16.edkeyvec ldy cx16.edkeyvec+1 sta cx16.r1 sty cx16.r1+1 pla sta $00 cli rts .pend ; source: library:/prog8lib/cx16/syslib.p8:961 inline asmsub disable_irqs() clobbers(A) { ; source: library:/prog8lib/cx16/syslib.p8:969 asmsub enable_irq_handlers(bool disable_all_irq_sources @Pc) clobbers(A,Y) { enable_irq_handlers .proc ; source: library:/prog8lib/cx16/syslib.p8:974 %asm {{ php sei bcc + lda #%00001111 trb cx16.VERA_IEN ; disable all IRQ sources + lda #<_irq_dispatcher ldy #>_irq_dispatcher sta cx16.CINV sty cx16.CINV+1 plp rts _irq_dispatcher ; order of handling: LINE, SPRCOL, AFLOW, VSYNC. jsr sys.save_prog8_internals cld lda cx16.VERA_ISR and cx16.VERA_IEN ; only consider the bits for sources that can actually raise the IRQ bit #2 beq + _mod_line_jump jsr _default_line_handler ; modified ldy #2 sty cx16.VERA_ISR bra _dispatch_end + bit #4 beq + _mod_sprcol_jump jsr _default_sprcol_handler ; modified ldy #4 sty cx16.VERA_ISR bra _dispatch_end + bit #8 beq + _mod_aflow_jump jsr _default_aflow_handler ; modified ; note: AFLOW can only be cleared by filling the audio FIFO for at least 1/4. Not via the ISR bit. bra _dispatch_end + bit #1 beq + _mod_vsync_jump jsr _default_vsync_handler ; modified cmp #0 bne _dispatch_end ldy #1 sty cx16.VERA_ISR bra _return_irq + lda #0 _dispatch_end cmp #0 beq _return_irq jsr sys.restore_prog8_internals jmp (sys.restore_irq._orig_irqvec) ; continue with normal kernal irq routine _return_irq jsr sys.restore_prog8_internals ply plx pla rti _default_vsync_handler lda #1 rts _default_line_handler lda #0 rts _default_sprcol_handler lda #0 rts _default_aflow_handler lda #0 rts .pend ; source: library:/prog8lib/cx16/syslib.p8:1055 asmsub set_vsync_irq_handler(uword address @AY) clobbers(A) { set_vsync_irq_handler .proc ; source: library:/prog8lib/cx16/syslib.p8:1058 %asm {{ php sei sta enable_irq_handlers._mod_vsync_jump+1 sty enable_irq_handlers._mod_vsync_jump+2 lda #1 tsb cx16.VERA_IEN plp rts .pend ; source: library:/prog8lib/cx16/syslib.p8:1070 asmsub set_line_irq_handler(uword rasterline @R0, uword address @AY) clobbers(A,Y) { set_line_irq_handler .proc ; source: library:/prog8lib/cx16/syslib.p8:1074 %asm {{ php sei sta enable_irq_handlers._mod_line_jump+1 sty enable_irq_handlers._mod_line_jump+2 lda cx16.r0 ldy cx16.r0+1 jsr sys.set_rasterline lda #2 tsb cx16.VERA_IEN plp rts .pend ; source: library:/prog8lib/cx16/syslib.p8:1089 asmsub set_sprcol_irq_handler(uword address @AY) clobbers(A) { set_sprcol_irq_handler .proc ; source: library:/prog8lib/cx16/syslib.p8:1092 %asm {{ php sei sta enable_irq_handlers._mod_sprcol_jump+1 sty enable_irq_handlers._mod_sprcol_jump+2 lda #4 tsb cx16.VERA_IEN plp rts .pend ; source: library:/prog8lib/cx16/syslib.p8:1104 asmsub set_aflow_irq_handler(uword address @AY) clobbers(A) { set_aflow_irq_handler .proc ; source: library:/prog8lib/cx16/syslib.p8:1107 %asm {{ php sei sta enable_irq_handlers._mod_aflow_jump+1 sty enable_irq_handlers._mod_aflow_jump+2 lda #8 tsb cx16.VERA_IEN plp rts .pend ; source: library:/prog8lib/cx16/syslib.p8:1120 inline asmsub disable_irq_handlers() { ; source: library:/prog8lib/cx16/syslib.p8:1159 asmsub cpu_is_65816() -> bool @A { cpu_is_65816 .proc ; source: library:/prog8lib/cx16/syslib.p8:1161 %asm {{ php clv .byte $e2, $ea ; SEP #$ea, should be interpreted as 2 NOPs by 6502. 65c816 will set the Overflow flag. bvc + lda #1 plp rts + lda #0 plp rts .pend ; source: library:/prog8lib/cx16/syslib.p8:1187 asmsub get_program_args(uword buffer @R0, ubyte buf_size @R1, bool binary @Pc) { get_program_args .proc ; source: library:/prog8lib/cx16/syslib.p8:1191 %asm {{ lda #0 rol a sta P8ZP_SCRATCH_REG lda $00 pha stz $00 stz P8ZP_SCRATCH_W1 lda #$bf sta P8ZP_SCRATCH_W1+1 ldy #0 - lda (P8ZP_SCRATCH_W1),y sta (cx16.r0),y beq + _continue iny cpy cx16.r1L ; max size? bne - beq ++ + lda P8ZP_SCRATCH_REG ; binary? bne _continue + pla sta $00 rts .pend .pend ; ---- block: 'sys' ---- sys .proc ; source: library:/prog8lib/cx16/syslib.p8:1218 sys { target = $10 ; source: library:/prog8lib/cx16/syslib.p8:1221 const ubyte target = 16 ; compilation target specifier. 64 = C64, 128 = C128, 16 = CommanderX16. ; source: library:/prog8lib/cx16/syslib.p8:1218 sys { ; source: library:/prog8lib/cx16/syslib.p8:1223 asmsub init_system() { init_system .proc ; source: library:/prog8lib/cx16/syslib.p8:1226 %asm {{ sei lda #0 tax tay jsr cx16.mouse_config ; disable mouse cld lda cx16.VERA_DC_VIDEO and #%00000111 ; retain chroma + output mode sta P8ZP_SCRATCH_REG lda #$0a sta $01 ; rom bank 10 (audio) jsr cx16.audio_init ; silence stz $01 ; rom bank 0 (kernal) jsr cbm.IOINIT jsr cbm.RESTOR jsr cbm.CINT lda cx16.VERA_DC_VIDEO and #%11111000 ora P8ZP_SCRATCH_REG sta cx16.VERA_DC_VIDEO ; restore old output mode lda #$90 ; black jsr cbm.CHROUT lda #1 jsr cbm.CHROUT ; swap fg/bg lda #$9e ; yellow jsr cbm.CHROUT lda #147 ; clear screen jsr cbm.CHROUT lda #8 ; disable charset case switch jsr cbm.CHROUT lda #PROG8_VARSHIGH_RAMBANK sta $00 ; select ram bank lda #0 tax tay clc clv cli rts .pend ; source: library:/prog8lib/cx16/syslib.p8:1269 asmsub init_system_phase2() { init_system_phase2 .proc ; source: library:/prog8lib/cx16/syslib.p8:1270 %asm {{ sei lda cx16.CINV sta restore_irq._orig_irqvec lda cx16.CINV+1 sta restore_irq._orig_irqvec+1 lda #PROG8_VARSHIGH_RAMBANK sta $00 ; select ram bank cli rts .pend ; source: library:/prog8lib/cx16/syslib.p8:1283 asmsub cleanup_at_exit() { cleanup_at_exit .proc ; source: library:/prog8lib/cx16/syslib.p8:1285 %asm {{ lda #1 sta $00 ; ram bank 1 lda #4 sta $01 ; rom bank 4 (basic) stz $2d ; hack to reset machine code monitor bank to 0 jsr cbm.CLRCHN ; reset i/o channels _exitcodeCarry = *+1 lda #0 lsr a _exitcode = *+1 lda #0 ; exit code possibly modified in exit() _exitcodeX = *+1 ldx #0 _exitcodeY = *+1 ldy #0 rts .pend ; source: library:/prog8lib/cx16/syslib.p8:1305 asmsub set_irq(uword handler @AY) clobbers(A) { set_irq .proc ; source: library:/prog8lib/cx16/syslib.p8:1307 %asm {{ sei sta _modified+1 sty _modified+2 lda #<_irq_handler sta cx16.CINV lda #>_irq_handler sta cx16.CINV+1 lda #1 tsb cx16.VERA_IEN ; enable the vsync irq cli rts _irq_handler jsr sys.save_prog8_internals cld _modified jsr $ffff ; modified pha jsr sys.restore_prog8_internals pla beq + jmp (restore_irq._orig_irqvec) ; continue with normal kernal irq routine + lda #1 sta cx16.VERA_ISR ; clear Vera Vsync irq status ply plx pla rti .pend ; source: library:/prog8lib/cx16/syslib.p8:1339 asmsub restore_irq() clobbers(A) { restore_irq .proc ; source: library:/prog8lib/cx16/syslib.p8:1340 %asm {{ sei lda _orig_irqvec sta cx16.CINV lda _orig_irqvec+1 sta cx16.CINV+1 lda cx16.VERA_IEN and #%11110000 ; disable all Vera IRQs but the vsync ora #%00000001 sta cx16.VERA_IEN cli rts _orig_irqvec .word 0 .pend ; source: library:/prog8lib/cx16/syslib.p8:1356 asmsub set_rasterirq(uword handler @AY, uword rasterpos @R0) clobbers(A) { set_rasterirq .proc ; source: library:/prog8lib/cx16/syslib.p8:1358 %asm {{ sei sta _modified+1 sty _modified+2 lda cx16.r0 ldy cx16.r0+1 lda cx16.VERA_IEN and #%11110000 ; disable all irqs but the line(raster) one ora #%00000010 sta cx16.VERA_IEN lda cx16.r0 ldy cx16.r0+1 jsr set_rasterline lda #<_raster_irq_handler sta cx16.CINV lda #>_raster_irq_handler sta cx16.CINV+1 cli rts _raster_irq_handler jsr sys.save_prog8_internals cld _modified jsr $ffff ; modified jsr sys.restore_prog8_internals ; end irq processing - don't use kernal's irq handling lda #2 tsb cx16.VERA_ISR ; clear Vera line irq status ply plx pla rti .pend ; source: library:/prog8lib/cx16/syslib.p8:1393 asmsub set_rasterline(uword line @AY) { set_rasterline .proc ; source: library:/prog8lib/cx16/syslib.p8:1394 %asm {{ php sei sta cx16.VERA_IRQLINE_L tya lsr a bcs + lda #%10000000 trb cx16.VERA_IEN plp rts + lda #%10000000 tsb cx16.VERA_IEN plp rts .pend ; source: library:/prog8lib/cx16/syslib.p8:1412 asmsub reset_system() { reset_system .proc ; source: library:/prog8lib/cx16/syslib.p8:1415 %asm {{ sei ldx #$42 ldy #2 lda #0 jsr cx16.i2c_write_byte bra * .pend ; source: library:/prog8lib/cx16/syslib.p8:1435 asmsub wait(uword jiffies @AY) clobbers(X) { wait .proc ; source: library:/prog8lib/cx16/syslib.p8:1439 %asm {{ sta P8ZP_SCRATCH_W1 sty P8ZP_SCRATCH_W1+1 _loop lda P8ZP_SCRATCH_W1 ora P8ZP_SCRATCH_W1+1 bne + rts + sei jsr cbm.RDTIM cli sta P8ZP_SCRATCH_B1 - sei jsr cbm.RDTIM cli cmp P8ZP_SCRATCH_B1 beq - lda P8ZP_SCRATCH_W1 bne + dec P8ZP_SCRATCH_W1+1 + dec P8ZP_SCRATCH_W1 bra _loop .pend ; source: library:/prog8lib/cx16/syslib.p8:1466 inline asmsub waitvsync() { ; source: library:/prog8lib/cx16/syslib.p8:1475 asmsub internal_stringcopy(uword source @R0, uword target @AY) clobbers (A,Y) { internal_stringcopy .proc ; source: library:/prog8lib/cx16/syslib.p8:1477 %asm {{ sta P8ZP_SCRATCH_W1 sty P8ZP_SCRATCH_W1+1 lda cx16.r0 ldy cx16.r0+1 jmp prog8_lib.strcpy .pend ; source: library:/prog8lib/cx16/syslib.p8:1486 asmsub memcopy(uword source @R0, uword target @R1, uword count @AY) clobbers(A,X,Y) { memcopy .proc ; source: library:/prog8lib/cx16/syslib.p8:1492 %asm {{ cpy #0 bne _longcopy ; copy <= 255 bytes tay bne _copyshort rts ; nothing to copy _copyshort dey beq + - lda (cx16.r0),y sta (cx16.r1),y dey bne - + lda (cx16.r0),y sta (cx16.r1),y rts _longcopy pha ; lsb(count) = remainder in last page tya tax ; x = num pages (1+) ldy #0 - lda (cx16.r0),y sta (cx16.r1),y iny bne - inc cx16.r0+1 inc cx16.r1+1 dex bne - ply bne _copyshort rts .pend ; source: library:/prog8lib/cx16/syslib.p8:1531 asmsub memset(uword mem @R0, uword numbytes @R1, ubyte value @A) clobbers(A,X,Y) { memset .proc ; source: library:/prog8lib/cx16/syslib.p8:1532 %asm {{ ldy cx16.r0 sty P8ZP_SCRATCH_W1 ldy cx16.r0+1 sty P8ZP_SCRATCH_W1+1 ldx cx16.r1 ldy cx16.r1+1 jmp prog8_lib.memset .pend ; source: library:/prog8lib/cx16/syslib.p8:1543 asmsub memsetw(uword mem @R0, uword numwords @R1, uword value @AY) clobbers (A,X,Y) { memsetw .proc ; source: library:/prog8lib/cx16/syslib.p8:1544 %asm {{ ldx cx16.r0 stx P8ZP_SCRATCH_W1 ldx cx16.r0+1 stx P8ZP_SCRATCH_W1+1 ldx cx16.r1 stx P8ZP_SCRATCH_W2 ldx cx16.r1+1 stx P8ZP_SCRATCH_W2+1 jmp prog8_lib.memsetw .pend ; source: library:/prog8lib/cx16/syslib.p8:1557 inline asmsub read_flags() -> ubyte @A { ; source: library:/prog8lib/cx16/syslib.p8:1564 inline asmsub clear_carry() { ; source: library:/prog8lib/cx16/syslib.p8:1570 inline asmsub set_carry() { ; source: library:/prog8lib/cx16/syslib.p8:1576 inline asmsub clear_irqd() { ; source: library:/prog8lib/cx16/syslib.p8:1582 inline asmsub set_irqd() { ; source: library:/prog8lib/cx16/syslib.p8:1588 inline asmsub irqsafe_set_irqd() { ; source: library:/prog8lib/cx16/syslib.p8:1595 inline asmsub irqsafe_clear_irqd() { ; source: library:/prog8lib/cx16/syslib.p8:1601 inline asmsub disable_caseswitch() { ; source: library:/prog8lib/cx16/syslib.p8:1608 inline asmsub enable_caseswitch() { ; source: library:/prog8lib/cx16/syslib.p8:1615 asmsub save_prog8_internals() { save_prog8_internals .proc ; source: library:/prog8lib/cx16/syslib.p8:1616 %asm {{ lda P8ZP_SCRATCH_B1 sta save_SCRATCH_ZPB1 lda P8ZP_SCRATCH_REG sta save_SCRATCH_ZPREG lda P8ZP_SCRATCH_W1 sta save_SCRATCH_ZPWORD1 lda P8ZP_SCRATCH_W1+1 sta save_SCRATCH_ZPWORD1+1 lda P8ZP_SCRATCH_W2 sta save_SCRATCH_ZPWORD2 lda P8ZP_SCRATCH_W2+1 sta save_SCRATCH_ZPWORD2+1 rts save_SCRATCH_ZPB1 .byte 0 save_SCRATCH_ZPREG .byte 0 save_SCRATCH_ZPWORD1 .word 0 save_SCRATCH_ZPWORD2 .word 0 .pend ; source: library:/prog8lib/cx16/syslib.p8:1637 asmsub restore_prog8_internals() { restore_prog8_internals .proc ; source: library:/prog8lib/cx16/syslib.p8:1638 %asm {{ lda save_prog8_internals.save_SCRATCH_ZPB1 sta P8ZP_SCRATCH_B1 lda save_prog8_internals.save_SCRATCH_ZPREG sta P8ZP_SCRATCH_REG lda save_prog8_internals.save_SCRATCH_ZPWORD1 sta P8ZP_SCRATCH_W1 lda save_prog8_internals.save_SCRATCH_ZPWORD1+1 sta P8ZP_SCRATCH_W1+1 lda save_prog8_internals.save_SCRATCH_ZPWORD2 sta P8ZP_SCRATCH_W2 lda save_prog8_internals.save_SCRATCH_ZPWORD2+1 sta P8ZP_SCRATCH_W2+1 rts .pend ; source: library:/prog8lib/cx16/syslib.p8:1655 asmsub exit(ubyte returnvalue @A) { exit .proc ; source: library:/prog8lib/cx16/syslib.p8:1657 %asm {{ sta cleanup_at_exit._exitcode ldx prog8_lib.orig_stackpointer txs jmp cleanup_at_exit .pend ; source: library:/prog8lib/cx16/syslib.p8:1665 asmsub exit2(ubyte resulta @A, ubyte resultx @X, ubyte resulty @Y) { exit2 .proc ; source: library:/prog8lib/cx16/syslib.p8:1667 %asm {{ sta cleanup_at_exit._exitcode stx cleanup_at_exit._exitcodeX sty cleanup_at_exit._exitcodeY ldx prog8_lib.orig_stackpointer txs jmp cleanup_at_exit .pend ; source: library:/prog8lib/cx16/syslib.p8:1677 asmsub exit3(ubyte resulta @A, ubyte resultx @X, ubyte resulty @Y, bool carry @Pc) { exit3 .proc ; source: library:/prog8lib/cx16/syslib.p8:1679 %asm {{ sta cleanup_at_exit._exitcode lda #0 rol a sta cleanup_at_exit._exitcodeCarry stx cleanup_at_exit._exitcodeX sty cleanup_at_exit._exitcodeY ldx prog8_lib.orig_stackpointer txs jmp cleanup_at_exit .pend ; source: library:/prog8lib/cx16/syslib.p8:1692 inline asmsub progend() -> uword @AY { ; source: library:/prog8lib/cx16/syslib.p8:1699 inline asmsub push(ubyte value @A) { ; source: library:/prog8lib/cx16/syslib.p8:1705 inline asmsub pushw(uword value @AY) { ; source: library:/prog8lib/cx16/syslib.p8:1712 inline asmsub pop() -> ubyte @A { ; source: library:/prog8lib/cx16/syslib.p8:1718 inline asmsub popw() -> uword @AY { .pend ; ---- block: 'conv' ---- conv .proc ; source: library:/prog8lib/conv.p8:3 conv { ; non-zeropage variables string_out ; PETSCII:"????????????????" .byte $3f, $3f, $3f, $3f, $3f, $3f, $3f, $3f, $3f, $3f, $3f, $3f, $3f, $3f, $3f, $3f .byte $00 ; source: library:/prog8lib/conv.p8:9 str @shared string_out = "????????????????" ; result buffer for the string conversion routines ; source: library:/prog8lib/conv.p8:5 %option no_symbol_prefixing, ignore_unused ; source: library:/prog8lib/conv.p8:11 asmsub str_ub0 (ubyte value @ A) clobbers(X) -> str @AY { str_ub0 .proc ; source: library:/prog8lib/conv.p8:13 %asm {{ jsr conv.ubyte2decimal sty string_out sta string_out+1 stx string_out+2 lda #0 sta string_out+3 lda #string_out rts .pend ; source: library:/prog8lib/conv.p8:26 asmsub str_ub (ubyte value @ A) clobbers(X) -> str @AY { str_ub .proc ; source: library:/prog8lib/conv.p8:28 %asm {{ ldy #0 sty P8ZP_SCRATCH_B1 jsr conv.ubyte2decimal _output_byte_digits ; hundreds? cpy #'0' beq + pha tya ldy P8ZP_SCRATCH_B1 sta string_out,y pla inc P8ZP_SCRATCH_B1 ; tens? + ldy P8ZP_SCRATCH_B1 cmp #'0' beq + sta string_out,y iny + ; ones. txa sta string_out,y iny lda #0 sta string_out,y lda #string_out rts .pend ; source: library:/prog8lib/conv.p8:60 asmsub str_b (byte value @ A) clobbers(X) -> str @AY { str_b .proc ; source: library:/prog8lib/conv.p8:62 %asm {{ ldy #0 sty P8ZP_SCRATCH_B1 cmp #0 bpl + pha lda #'-' sta string_out inc P8ZP_SCRATCH_B1 pla + jsr conv.byte2decimal bra str_ub._output_byte_digits .pend ; source: library:/prog8lib/conv.p8:77 asmsub str_ubhex (ubyte value @ A) clobbers(X) -> str @AY { str_ubhex .proc ; source: library:/prog8lib/conv.p8:79 %asm {{ jsr conv.ubyte2hex sta string_out sty string_out+1 lda #0 sta string_out+2 lda #string_out rts .pend ; source: library:/prog8lib/conv.p8:91 asmsub str_ubbin (ubyte value @ A) clobbers(X) -> str @AY { str_ubbin .proc ; source: library:/prog8lib/conv.p8:93 %asm {{ sta P8ZP_SCRATCH_B1 ldy #0 sty string_out+8 ldy #7 - lsr P8ZP_SCRATCH_B1 bcc + lda #'1' bne _digit + lda #'0' _digit sta string_out,y dey bpl - lda #string_out rts .pend ; source: library:/prog8lib/conv.p8:112 asmsub str_uwbin (uword value @ AY) clobbers(X) -> str @AY { str_uwbin .proc ; source: library:/prog8lib/conv.p8:114 %asm {{ sta P8ZP_SCRATCH_REG tya jsr str_ubbin ldy #0 sty string_out+16 ldy #7 - lsr P8ZP_SCRATCH_REG bcc + lda #'1' bne _digit + lda #'0' _digit sta string_out+8,y dey bpl - lda #string_out rts .pend ; source: library:/prog8lib/conv.p8:135 asmsub str_uwhex (uword value @ AY) -> str @AY { str_uwhex .proc ; source: library:/prog8lib/conv.p8:137 %asm {{ pha tya jsr conv.ubyte2hex sta string_out sty string_out+1 pla jsr conv.ubyte2hex sta string_out+2 sty string_out+3 lda #0 sta string_out+4 lda #string_out rts .pend ; source: library:/prog8lib/conv.p8:155 asmsub str_uw0 (uword value @ AY) clobbers(X) -> str @AY { str_uw0 .proc ; source: library:/prog8lib/conv.p8:157 %asm {{ jsr conv.uword2decimal ldy #0 - lda conv.uword2decimal.decTenThousands,y sta string_out,y beq + iny bne - + lda #string_out rts .pend ; source: library:/prog8lib/conv.p8:172 asmsub str_uw (uword value @ AY) clobbers(X) -> str @AY { str_uw .proc ; source: library:/prog8lib/conv.p8:174 %asm {{ jsr conv.uword2decimal ldx #0 _output_digits ldy #0 - lda conv.uword2decimal.decTenThousands,y beq _allzero cmp #'0' bne _gotdigit iny bne - _gotdigit sta string_out,x inx iny lda conv.uword2decimal.decTenThousands,y bne _gotdigit _end lda #0 sta string_out,x lda #string_out rts _allzero lda #'0' sta string_out,x inx bne _end .pend ; source: library:/prog8lib/conv.p8:203 asmsub str_w (word value @ AY) clobbers(X) -> str @AY { str_w .proc ; source: library:/prog8lib/conv.p8:205 %asm {{ cpy #0 bpl str_uw pha lda #'-' sta string_out tya eor #255 tay pla eor #255 clc adc #1 bcc + iny + jsr conv.uword2decimal ldx #1 bne str_uw._output_digits rts .pend ; source: library:/prog8lib/conv.p8:230 asmsub any2uword(str string @AY) clobbers(Y) -> ubyte @A { any2uword .proc ; source: library:/prog8lib/conv.p8:236 %asm {{ pha sta P8ZP_SCRATCH_W1 sty P8ZP_SCRATCH_W1+1 ldy #0 lda (P8ZP_SCRATCH_W1),y ldy P8ZP_SCRATCH_W1+1 cmp #'$' beq _hex cmp #'%' beq _bin pla jsr str2uword jmp _result _hex pla jsr hex2uword jmp _result _bin pla jsr bin2uword _result pha lda cx16.r15 sta P8ZP_SCRATCH_B1 ; result value pla sta cx16.r15 sty cx16.r15+1 lda P8ZP_SCRATCH_B1 rts .pend ; source: library:/prog8lib/conv.p8:267 inline asmsub str2ubyte(str string @AY) clobbers(Y) -> ubyte @A { ; source: library:/prog8lib/conv.p8:277 inline asmsub str2byte(str string @AY) clobbers(Y) -> byte @A { ; source: library:/prog8lib/conv.p8:287 asmsub str2uword(str string @AY) -> uword @AY { str2uword .proc ; source: library:/prog8lib/conv.p8:292 %asm {{ _result = P8ZP_SCRATCH_W1 sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy #0 sty _result sty _result+1 sty cx16.r15+1 _loop lda (P8ZP_SCRATCH_W2),y sec sbc #48 bpl _digit _done sty cx16.r15 lda _result ldy _result+1 rts _digit cmp #10 bcs _done ; add digit to result pha jsr _result_times_10 pla clc adc _result sta _result bcc + inc _result+1 + iny bne _loop ; never reached _result_times_10 ; (W*4 + W)*2 lda _result+1 sta P8ZP_SCRATCH_REG lda _result asl a rol P8ZP_SCRATCH_REG asl a rol P8ZP_SCRATCH_REG clc adc _result sta _result lda P8ZP_SCRATCH_REG adc _result+1 asl _result rol a sta _result+1 rts .pend ; source: library:/prog8lib/conv.p8:346 asmsub str2word(str string @AY) -> word @AY { str2word .proc ; source: library:/prog8lib/conv.p8:351 %asm {{ _result = P8ZP_SCRATCH_W1 sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy #0 sty _result sty _result+1 sty _negative sty cx16.r15+1 lda (P8ZP_SCRATCH_W2),y cmp #'+' bne + iny + cmp #'-' bne _parse inc _negative iny _parse lda (P8ZP_SCRATCH_W2),y sec sbc #48 bpl _digit _done sty cx16.r15 lda _negative beq + sec lda #0 sbc _result sta _result lda #0 sbc _result+1 sta _result+1 + lda _result ldy _result+1 rts _digit cmp #10 bcs _done ; add digit to result pha jsr str2uword._result_times_10 pla clc adc _result sta _result bcc + inc _result+1 + iny bne _parse ; never reached _negative .byte 0 .pend ; source: library:/prog8lib/conv.p8:405 asmsub hex2uword(str string @AY) -> uword @AY { hex2uword .proc ; source: library:/prog8lib/conv.p8:410 %asm {{ sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy #0 sty P8ZP_SCRATCH_W1 sty P8ZP_SCRATCH_W1+1 sty cx16.r15+1 lda (P8ZP_SCRATCH_W2),y beq _stop cmp #'$' bne _loop iny _loop lda #0 sta P8ZP_SCRATCH_B1 lda (P8ZP_SCRATCH_W2),y beq _stop cmp #7 ; screencode letters A-F are 1-6 bcc _add_letter and #127 cmp #97 bcs _try_iso ; maybe letter is iso:'a'-iso:'f' (97-102) cmp #'g' bcs _stop cmp #'a' bcs _add_letter cmp #'0' bcc _stop cmp #'9'+1 bcs _stop _calc asl P8ZP_SCRATCH_W1 rol P8ZP_SCRATCH_W1+1 asl P8ZP_SCRATCH_W1 rol P8ZP_SCRATCH_W1+1 asl P8ZP_SCRATCH_W1 rol P8ZP_SCRATCH_W1+1 asl P8ZP_SCRATCH_W1 rol P8ZP_SCRATCH_W1+1 and #$0f clc adc P8ZP_SCRATCH_B1 ora P8ZP_SCRATCH_W1 sta P8ZP_SCRATCH_W1 iny bne _loop _stop sty cx16.r15 lda P8ZP_SCRATCH_W1 ldy P8ZP_SCRATCH_W1+1 rts _add_letter pha lda #9 sta P8ZP_SCRATCH_B1 pla jmp _calc _try_iso cmp #103 bcs _stop and #63 bne _add_letter .pend ; source: library:/prog8lib/conv.p8:475 asmsub bin2uword(str string @AY) -> uword @AY { bin2uword .proc ; source: library:/prog8lib/conv.p8:479 %asm {{ sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy #0 sty P8ZP_SCRATCH_W1 sty P8ZP_SCRATCH_W1+1 sty cx16.r15+1 lda (P8ZP_SCRATCH_W2),y beq _stop cmp #'%' bne _loop iny _loop lda (P8ZP_SCRATCH_W2),y cmp #'0' bcc _stop cmp #'2' bcs _stop _first asl P8ZP_SCRATCH_W1 rol P8ZP_SCRATCH_W1+1 and #1 ora P8ZP_SCRATCH_W1 sta P8ZP_SCRATCH_W1 iny bne _loop _stop sty cx16.r15 lda P8ZP_SCRATCH_W1 ldy P8ZP_SCRATCH_W1+1 rts .pend ; source: library:/prog8lib/conv.p8:515 asmsub ubyte2decimal (ubyte value @A) -> ubyte @Y, ubyte @A, ubyte @X { ubyte2decimal .proc ; source: library:/prog8lib/conv.p8:517 %asm {{ ldy #uword2decimal.ASCII_0_OFFSET jmp uword2decimal.hex_try200 .pend ; source: library:/prog8lib/conv.p8:523 asmsub uword2decimal (uword value @AY) -> ubyte @Y, ubyte @A, ubyte @X { uword2decimal .proc ; source: library:/prog8lib/conv.p8:529 %asm {{ ;Convert 16 bit Hex to Decimal (0-65535) Rev 2 ;By Omegamatrix Further optimizations by tepples ; routine from https://forums.nesdev.org/viewtopic.php?p=130363&sid=1944ba8bac4d6afa9c02e3cc42304e6b#p130363 ;HexToDec99 ; start in A ; end with A = 10's, decOnes (also in X) ;HexToDec255 ; start in A ; end with Y = 100's, A = 10's, decOnes (also in X) ;HexToDec999 ; start with A = high byte, Y = low byte ; end with Y = 100's, A = 10's, decOnes (also in X) ; requires 1 extra temp register on top of decOnes, could combine ; these two if HexToDec65535 was eliminated... ;HexToDec65535 ; start with A/Y (low/high) as 16 bit value ; end with decTenThousand, decThousand, Y = 100's, A = 10's, decOnes (also in X) ; (irmen: I store Y and A in decHundreds and decTens too, so all of it can be easily printed) ASCII_0_OFFSET = $30 temp = P8ZP_SCRATCH_B1 ; byte in zeropage hexHigh = P8ZP_SCRATCH_W1 ; byte in zeropage hexLow = P8ZP_SCRATCH_W1+1 ; byte in zeropage HexToDec65535; SUBROUTINE sty hexHigh ;3 @9 sta hexLow ;3 @12 tya tax ;2 @14 lsr a ;2 @16 lsr a ;2 @18 integer divide 1024 (result 0-63) cpx #$A7 ;2 @20 account for overflow of multiplying 24 from 43,000 ($A7F8) onward, adc #1 ;2 @22 we can just round it to $A700, and the divide by 1024 is fine... ;at this point we have a number 1-65 that we have to times by 24, ;add to original sum, and Mod 1024 to get a remainder 0-999 sta temp ;3 @25 asl a ;2 @27 adc temp ;3 @30 x3 tay ;2 @32 lsr a ;2 @34 lsr a ;2 @36 lsr a ;2 @38 lsr a ;2 @40 lsr a ;2 @42 tax ;2 @44 tya ;2 @46 asl a ;2 @48 asl a ;2 @50 asl a ;2 @52 clc ;2 @54 adc hexLow ;3 @57 sta hexLow ;3 @60 txa ;2 @62 adc hexHigh ;3 @65 sta hexHigh ;3 @68 ror a ;2 @70 lsr a ;2 @72 tay ;2 @74 integer divide 1,000 (result 0-65) lsr a ;2 @76 split the 1,000 and 10,000 digit tax ;2 @78 lda ShiftedBcdTab,x ;4 @82 tax ;2 @84 rol a ;2 @86 and #$0F ;2 @88 ora #ASCII_0_OFFSET sta decThousands ;3 @91 txa ;2 @93 lsr a ;2 @95 lsr a ;2 @97 lsr a ;2 @99 ora #ASCII_0_OFFSET sta decTenThousands ;3 @102 lda hexLow ;3 @105 cpy temp ;3 @108 bmi _doSubtract ;2³ @110/111 beq _useZero ;2³ @112/113 adc #23 + 24 ;2 @114 _doSubtract sbc #23 ;2 @116 sta hexLow ;3 @119 _useZero lda hexHigh ;3 @122 sbc #0 ;2 @124 Start100s and #$03 ;2 @126 tax ;2 @128 0,1,2,3 cmp #2 ;2 @130 rol a ;2 @132 0,2,5,7 ora #ASCII_0_OFFSET tay ;2 @134 Y = Hundreds digit lda hexLow ;3 @137 adc Mod100Tab,x ;4 @141 adding remainder of 256, 512, and 256+512 (all mod 100) bcs hex_doSub200 ;2³ @143/144 hex_try200 cmp #200 ;2 @145 bcc hex_try100 ;2³ @147/148 hex_doSub200 iny ;2 @149 iny ;2 @151 sbc #200 ;2 @153 hex_try100 cmp #100 ;2 @155 bcc HexToDec99 ;2³ @157/158 iny ;2 @159 sbc #100 ;2 @161 HexToDec99; SUBROUTINE lsr a ;2 @163 tax ;2 @165 lda ShiftedBcdTab,x ;4 @169 tax ;2 @171 rol a ;2 @173 and #$0F ;2 @175 ora #ASCII_0_OFFSET sta decOnes ;3 @178 txa ;2 @180 lsr a ;2 @182 lsr a ;2 @184 lsr a ;2 @186 ora #ASCII_0_OFFSET ; irmen: load X with ones, and store Y and A too, for easy printing afterwards sty decHundreds sta decTens ldx decOnes rts ;6 @192 Y=hundreds, A = tens digit, X=ones digit HexToDec999; SUBROUTINE sty hexLow ;3 @9 jmp Start100s ;3 @12 Mod100Tab .byte 0,56,12,56+12 ShiftedBcdTab .byte $00,$01,$02,$03,$04,$08,$09,$0A,$0B,$0C .byte $10,$11,$12,$13,$14,$18,$19,$1A,$1B,$1C .byte $20,$21,$22,$23,$24,$28,$29,$2A,$2B,$2C .byte $30,$31,$32,$33,$34,$38,$39,$3A,$3B,$3C .byte $40,$41,$42,$43,$44,$48,$49,$4A,$4B,$4C decTenThousands .byte 0 decThousands .byte 0 decHundreds .byte 0 decTens .byte 0 decOnes .byte 0 .byte 0 ; zero-terminate the decimal output string .pend ; source: library:/prog8lib/conv.p8:698 asmsub byte2decimal (byte value @A) -> ubyte @Y, ubyte @A, ubyte @X { byte2decimal .proc ; source: library:/prog8lib/conv.p8:701 %asm {{ cmp #0 bpl + eor #255 clc adc #1 + jmp ubyte2decimal .pend ; source: library:/prog8lib/conv.p8:711 asmsub ubyte2hex (ubyte value @A) clobbers(X) -> ubyte @A, ubyte @Y { ubyte2hex .proc ; source: library:/prog8lib/conv.p8:713 %asm {{ pha and #$0f tax ldy _hex_digits,x pla lsr a lsr a lsr a lsr a tax lda _hex_digits,x rts _hex_digits .text "0123456789abcdef" ; can probably be reused for other stuff as well .pend ; source: library:/prog8lib/conv.p8:731 asmsub uword2hex (uword value @AY) clobbers(A,Y) { uword2hex .proc ; source: library:/prog8lib/conv.p8:733 %asm {{ sta P8ZP_SCRATCH_REG tya jsr ubyte2hex sta output sty output+1 lda P8ZP_SCRATCH_REG jsr ubyte2hex sta output+2 sty output+3 rts output .text "0000", $00 ; 0-terminated output buffer (to make printing easier) .pend .pend ; ---- block: 'floats' ---- floats .proc ; source: library:/prog8lib/cx16/floats.p8:6 floats { AYINT_facmo = $c6 PI = 3.141592653589793 TWOPI = 6.283185307179586 π = 3.141592653589793 AYINT = $fe00 GIVAYF = $fe03 FOUT = $fe06 VAL_1 = $fe09 GETADR = $fe0c FLOATC = $fe0f FSUB = $fe12 FSUBT = $fe15 FADD = $fe18 FADDT = $fe1b FMULT = $fe1e FMULTT = $fe21 FDIV = $fe24 FDIVT = $fe27 LOG = $fe2a INT = $fe2d SQR = $fe30 NEGOP = $fe33 FPWR = $fe36 FPWRT = $fe39 EXP = $fe3c COS = $fe3f SIN = $fe42 TAN = $fe45 ATN = $fe48 ROUND = $fe4b ABS = $fe4e SIGN = $fe51 FCOMP = $fe54 RND_0 = $fe57 RND = $fe57 CONUPK = $fe5a ROMUPK = $fe5d MOVFRM = $fe60 MOVFM = $fe63 MOVMF = $fe66 MOVFA = $fe69 MOVAF = $fe6c FADDH = $fe6f ZEROFC = $fe72 NORMAL = $fe75 NEGFAC = $fe78 MUL10 = $fe7b DIV10 = $fe7e MOVEF = $fe81 SGN = $fe84 FLOAT = $fe87 FLOATS = $fe8a QINT = $fe8d FINLOG = $fe90 ; source: library:/prog8lib/cx16/floats.p8:9 const float π = 3.141592653589793 ; source: library:/prog8lib/cx16/floats.p8:10 const float PI = π ; source: library:/prog8lib/cx16/floats.p8:11 const float TWOPI = 2*π ; source: library:/prog8lib/cx16/floats.p8:176 &uword AYINT_facmo = $c6 ; $c6/$c7 contain result of AYINT ; source: library:/prog8lib/cx16/floats.p8:6 floats { ; source: library:/prog8lib/shared_floats_functions.p8:1 floats { ; source: library:/prog8lib/cx16/floats.p8:22 romsub $fe00 = AYINT() clobbers(A,X,Y) ; fac1-> signed word in 100-101 ($64-$65) MSB FIRST. (might throw ILLEGAL QUANTITY) ; source: library:/prog8lib/cx16/floats.p8:27 romsub $fe03 = GIVAYF(ubyte lo @ Y, ubyte hi @ A) clobbers(A,X,Y) ; source: library:/prog8lib/cx16/floats.p8:29 romsub $fe06 = FOUT() clobbers(X) -> uword @ AY ; fac1 -> string, address returned in AY ; source: library:/prog8lib/cx16/floats.p8:30 romsub $fe09 = VAL_1(uword string @XY, ubyte length @A) clobbers(A,X,Y) -> float @FAC1 ; convert ASCII string in XY and length in A, to floating point in FAC1. WARNING: only implemented in ROM 47+. Safer to use floats.parse() instead. ; source: library:/prog8lib/cx16/floats.p8:34 romsub $fe0c = GETADR() clobbers(X) -> ubyte @ Y, ubyte @ A ; source: library:/prog8lib/cx16/floats.p8:35 romsub $fe0f = FLOATC() clobbers(A,X,Y) ; convert address to floating point ; source: library:/prog8lib/cx16/floats.p8:37 romsub $fe12 = FSUB(uword mflpt @ AY) clobbers(A,X,Y) ; fac1 = mflpt from A/Y - fac1 ; source: library:/prog8lib/cx16/floats.p8:38 romsub $fe15 = FSUBT() clobbers(A,X,Y) ; fac1 = fac2-fac1 mind the order of the operands ; source: library:/prog8lib/cx16/floats.p8:39 romsub $fe18 = FADD(uword mflpt @ AY) clobbers(A,X,Y) ; fac1 += mflpt value from A/Y ; source: library:/prog8lib/cx16/floats.p8:40 romsub $fe1b = FADDT() clobbers(A,X,Y) ; fac1 += fac2 ; source: library:/prog8lib/cx16/floats.p8:41 romsub $fe1e = FMULT(uword mflpt @ AY) clobbers(A,X,Y) ; fac1 *= mflpt value from A/Y ; source: library:/prog8lib/cx16/floats.p8:42 romsub $fe21 = FMULTT() clobbers(A,X,Y) ; fac1 *= fac2 ; source: library:/prog8lib/cx16/floats.p8:43 romsub $fe24 = FDIV(uword mflpt @ AY) clobbers(A,X,Y) ; fac1 = mflpt in A/Y / fac1 ; source: library:/prog8lib/cx16/floats.p8:44 romsub $fe27 = FDIVT() clobbers(A,X,Y) ; fac1 = fac2/fac1 mind the order of the operands ; source: library:/prog8lib/cx16/floats.p8:45 romsub $fe2a = LOG() clobbers(A,X,Y) ; fac1 = LN(fac1) (natural log) ; source: library:/prog8lib/cx16/floats.p8:46 romsub $fe2d = INT() clobbers(A,X,Y) ; INT() truncates, use ROUND or FADDH first to round instead of trunc ; source: library:/prog8lib/cx16/floats.p8:47 romsub $fe30 = SQR() clobbers(A,X,Y) ; fac1 = SQRT(fac1) ; source: library:/prog8lib/cx16/floats.p8:48 romsub $fe33 = NEGOP() clobbers(A) ; switch the sign of fac1 (fac1 = -fac1) ; source: library:/prog8lib/cx16/floats.p8:49 romsub $fe36 = FPWR(uword mflpt @ AY) clobbers(A,X,Y) ; fac1 = fac2 ** float in A/Y ; source: library:/prog8lib/cx16/floats.p8:50 romsub $fe39 = FPWRT() clobbers(A,X,Y) ; fac1 = fac2 ** fac1 ; source: library:/prog8lib/cx16/floats.p8:51 romsub $fe3c = EXP() clobbers(A,X,Y) ; fac1 = EXP(fac1) (e ** fac1) ; source: library:/prog8lib/cx16/floats.p8:52 romsub $fe3f = COS() clobbers(A,X,Y) ; fac1 = COS(fac1) ; source: library:/prog8lib/cx16/floats.p8:53 romsub $fe42 = SIN() clobbers(A,X,Y) ; fac1 = SIN(fac1) ; source: library:/prog8lib/cx16/floats.p8:54 romsub $fe45 = TAN() clobbers(A,X,Y) ; fac1 = TAN(fac1) ; source: library:/prog8lib/cx16/floats.p8:55 romsub $fe48 = ATN() clobbers(A,X,Y) ; fac1 = ATN(fac1) ; source: library:/prog8lib/cx16/floats.p8:56 romsub $fe4b = ROUND() clobbers(A,X,Y) ; round fac1 ; source: library:/prog8lib/cx16/floats.p8:57 romsub $fe4e = ABS() clobbers(A,X,Y) ; fac1 = ABS(fac1) ; source: library:/prog8lib/cx16/floats.p8:58 romsub $fe51 = SIGN() clobbers(X,Y) -> ubyte @ A ; SIGN(fac1) to A, $ff, $0, $1 for negative, zero, positive ; source: library:/prog8lib/cx16/floats.p8:59 romsub $fe54 = FCOMP(uword mflpt @ AY) clobbers(X,Y) -> ubyte @ A ; A = compare fac1 to mflpt in A/Y, 0=equal 1=fac1 is greater, 255=fac1 is less than ; source: library:/prog8lib/cx16/floats.p8:60 romsub $fe57 = RND_0() clobbers(A,X,Y) ; fac1 = RND(fac1) float random number generator NOTE: incompatible with C64's RND routine ; source: library:/prog8lib/cx16/floats.p8:61 romsub $fe57 = RND() clobbers(A,X,Y) ; alias for RND_0 ; source: library:/prog8lib/cx16/floats.p8:62 romsub $fe5a = CONUPK(uword mflpt @ AY) clobbers(A,X,Y) ; load mflpt value from memory in A/Y into fac2 ; source: library:/prog8lib/cx16/floats.p8:63 romsub $fe5d = ROMUPK(uword mflpt @ AY) clobbers(A,X,Y) ; load mflpt value from memory in current bank in A/Y into fac2 ; source: library:/prog8lib/cx16/floats.p8:64 romsub $fe60 = MOVFRM(uword mflpt @ AY) clobbers(A,X,Y) ; load mflpt value from memory in A/Y into fac1 (use MOVFM instead) ; source: library:/prog8lib/cx16/floats.p8:65 romsub $fe63 = MOVFM(uword mflpt @ AY) clobbers(A,X,Y) ; load mflpt value from memory in A/Y into fac1 ; source: library:/prog8lib/cx16/floats.p8:66 romsub $fe66 = MOVMF(uword mflpt @ XY) clobbers(A,X,Y) ; store fac1 to memory X/Y as 5-byte mflpt ; source: library:/prog8lib/cx16/floats.p8:67 romsub $fe69 = MOVFA() clobbers(A,X) ; copy fac2 to fac1 ; source: library:/prog8lib/cx16/floats.p8:68 romsub $fe6c = MOVAF() clobbers(A,X) ; copy fac1 to fac2 (rounded) ; source: library:/prog8lib/cx16/floats.p8:71 romsub $fe6f = FADDH() clobbers(A,X,Y) ; fac1 += 0.5, for rounding- call this before INT ; source: library:/prog8lib/cx16/floats.p8:72 romsub $fe72 = ZEROFC() clobbers(A,X,Y) ; fac1 = 0 ; source: library:/prog8lib/cx16/floats.p8:73 romsub $fe75 = NORMAL() clobbers(A,X,Y) ; normalize fac1 ; source: library:/prog8lib/cx16/floats.p8:74 romsub $fe78 = NEGFAC() clobbers(A) ; switch the sign of fac1 (fac1 = -fac1) (doesn't work, juse use NEGOP() instead!) ; source: library:/prog8lib/cx16/floats.p8:75 romsub $fe7b = MUL10() clobbers(A,X,Y) ; fac1 *= 10 ; source: library:/prog8lib/cx16/floats.p8:76 romsub $fe7e = DIV10() clobbers(A,X,Y) ; fac1 /= 10 , CAUTION: result is always positive! Have to restore sign manually! ; source: library:/prog8lib/cx16/floats.p8:77 romsub $fe81 = MOVEF() clobbers(A,X) ; copy fac1 to fac2 ; source: library:/prog8lib/cx16/floats.p8:78 romsub $fe84 = SGN() clobbers(A,X,Y) ; fac1 = SGN(fac1), result of SIGN (-1, 0 or 1) ; source: library:/prog8lib/cx16/floats.p8:79 romsub $fe87 = FLOAT() clobbers(A,X,Y) ; FAC = (s8).A ; source: library:/prog8lib/cx16/floats.p8:80 romsub $fe8a = FLOATS() clobbers(A,X,Y) ; FAC = (s16)facho+1:facho ; source: library:/prog8lib/cx16/floats.p8:81 romsub $fe8d = QINT() clobbers(A,X,Y) ; facho:facho+1:facho+2:facho+3 = u32(FAC) ; source: library:/prog8lib/cx16/floats.p8:82 romsub $fe90 = FINLOG(byte value @A) clobbers (A, X, Y) ; fac1 += signed byte in A ; source: library:/prog8lib/cx16/floats.p8:86 asmsub FREADSA (byte value @A) clobbers(A,X,Y) { FREADSA .proc ; source: library:/prog8lib/cx16/floats.p8:88 %asm {{ tay bpl + lda #$ff jmp GIVAYF + lda #0 jmp GIVAYF .pend ; source: library:/prog8lib/cx16/floats.p8:98 asmsub GIVUAYFAY (uword value @ AY) clobbers(A,X,Y) { GIVUAYFAY .proc ; source: library:/prog8lib/cx16/floats.p8:100 %asm {{ sty $c4 ; facmo ($64 on c128) sta $c5 ; facmo+1 ($65 on c128) ldx #$90 sec jmp FLOATC .pend ; source: library:/prog8lib/cx16/floats.p8:109 asmsub GIVAYFAY (uword value @ AY) clobbers(A,X,Y) { GIVAYFAY .proc ; source: library:/prog8lib/cx16/floats.p8:111 %asm {{ sta P8ZP_SCRATCH_B1 tya ldy P8ZP_SCRATCH_B1 jmp GIVAYF ; this uses the inverse order, Y/A .pend ; source: library:/prog8lib/cx16/floats.p8:119 asmsub GETADRAY () clobbers(X) -> uword @ AY { GETADRAY .proc ; source: library:/prog8lib/cx16/floats.p8:121 %asm {{ jsr GETADR ; this uses the inverse order, Y/A sta P8ZP_SCRATCH_B1 tya ldy P8ZP_SCRATCH_B1 rts .pend ; source: library:/prog8lib/cx16/floats.p8:130 asmsub FREADUY (ubyte value @Y) { FREADUY .proc ; source: library:/prog8lib/cx16/floats.p8:132 %asm {{ lda #0 jmp GIVAYF .pend ; source: library:/prog8lib/cx16/floats.p8:138 asmsub parse(str value @AY) -> float @FAC1 { parse .proc ; source: library:/prog8lib/cx16/floats.p8:143 %asm {{ ldx VAL_1 cpx #$4c ; is there an implementation in VAL_1? (test for JMP) bne + ; no, do it ourselves pha ; yes, count the length and call rom VAL_1. phy jsr prog8_lib.strlen tya ply plx jmp VAL_1 + sta $a9 ; 'index' variable sty $aa jsr prog8_lib.strlen lda $deb6 cmp #$d0 ; sanity check for kernal routine correct bne + tya jmp $deb6 ; kernal version dependent... + ; print error message if routine is borked in kernal, and exit program ldy #0 - lda _msg,y beq + jsr cbm.CHROUT iny bne - + jmp sys.exit _msg .text 13,"?val kaputt",13,0 .pend ; source: library:/prog8lib/cx16/floats.p8:185 asmsub normalize(float value @FAC1) -> float @ FAC1 { normalize .proc ; source: library:/prog8lib/cx16/floats.p8:186 %asm {{ jmp floats.NORMAL .pend ; source: library:/prog8lib/cx16/floats.p8:191 %asminclude "library:c64/floats.asm" ; --- low level floating point assembly routines for the C64 FL_ONE_const .byte 129 ; 1.0 FL_ZERO_const .byte 0,0,0,0,0 ; 0.0 FL_LOG2_const .byte $80, $31, $72, $17, $f8 ; log(2) floats_temp_var .byte 0,0,0,0,0 ; temporary storage for a float ub2float .proc ; -- convert ubyte in SCRATCH_ZPB1 to float at address A/Y ; clobbers A, X, Y sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy P8ZP_SCRATCH_B1 lda #0 jsr GIVAYF _fac_to_mem ldx P8ZP_SCRATCH_W2 ldy P8ZP_SCRATCH_W2+1 jmp MOVMF .pend b2float .proc ; -- convert byte in SCRATCH_ZPB1 to float at address A/Y ; clobbers A, X, Y sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 lda P8ZP_SCRATCH_B1 jsr FREADSA jmp ub2float._fac_to_mem .pend uw2float .proc ; -- convert uword in SCRATCH_ZPWORD1 to float at address A/Y ; clobbers X sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 lda P8ZP_SCRATCH_W1 ldy P8ZP_SCRATCH_W1+1 jsr GIVUAYFAY jmp ub2float._fac_to_mem .pend w2float .proc ; -- convert word in SCRATCH_ZPWORD1 to float at address A/Y ; clobbers X sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy P8ZP_SCRATCH_W1 lda P8ZP_SCRATCH_W1+1 jsr GIVAYF jmp ub2float._fac_to_mem .pend cast_from_uw .proc ; -- uword in A/Y into float var at (P8ZP_SCRATCH_W2) ; clobbers X jsr GIVUAYFAY jmp ub2float._fac_to_mem .pend cast_from_w .proc ; -- word in A/Y into float var at (P8ZP_SCRATCH_W2) ; clobbers X jsr GIVAYFAY jmp ub2float._fac_to_mem .pend cast_from_ub .proc ; -- ubyte in Y into float var at (P8ZP_SCRATCH_W2) ; clobbers X jsr FREADUY jmp ub2float._fac_to_mem .pend cast_from_b .proc ; -- byte in A into float var at (P8ZP_SCRATCH_W2) ; clobbers X jsr FREADSA jmp ub2float._fac_to_mem .pend cast_as_uw_into_ya .proc ; also used for float 2 ub ; -- cast float at A/Y to uword into Y/A ; clobbers X jsr MOVFM jmp cast_FAC1_as_uw_into_ya .pend cast_as_w_into_ay .proc ; also used for float 2 b ; -- cast float at A/Y to word into A/Y ; clobbers X jsr MOVFM jmp cast_FAC1_as_w_into_ay .pend cast_as_bool_into_a .proc ; -- cast float at A/Y to bool into A ; clobbers X jsr MOVFM jmp cast_FAC1_as_bool_into_a .pend cast_FAC1_as_bool_into_a .proc ; -- cast fac1 to bool into A ; clobbers X jsr SIGN and #1 rts .pend cast_FAC1_as_uw_into_ya .proc ; also used for float 2 ub ; -- cast fac1 to uword into Y/A ; clobbers X jmp GETADR ; into Y/A .pend cast_FAC1_as_w_into_ay .proc ; also used for float 2 b ; -- cast fac1 to word into A/Y ; clobbers X jsr AYINT ldy floats.AYINT_facmo lda floats.AYINT_facmo+1 rts .pend copy_float .proc ; -- copies the 5 bytes of the mflt value pointed to by P8ZP_SCRATCH_W1, ; into the 5 bytes pointed to by A/Y. Clobbers A,Y. sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy #0 lda (P8ZP_SCRATCH_W1),y sta (P8ZP_SCRATCH_W2),y iny lda (P8ZP_SCRATCH_W1),y sta (P8ZP_SCRATCH_W2),y iny lda (P8ZP_SCRATCH_W1),y sta (P8ZP_SCRATCH_W2),y iny lda (P8ZP_SCRATCH_W1),y sta (P8ZP_SCRATCH_W2),y iny lda (P8ZP_SCRATCH_W1),y sta (P8ZP_SCRATCH_W2),y rts .pend inc_var_f .proc ; -- add 1 to float pointed to by A/Y ; clobbers X sta P8ZP_SCRATCH_W1 sty P8ZP_SCRATCH_W1+1 jsr MOVFM lda #FL_ONE_const jsr FADD ldx P8ZP_SCRATCH_W1 ldy P8ZP_SCRATCH_W1+1 jmp MOVMF .pend dec_var_f .proc ; -- subtract 1 from float pointed to by A/Y ; clobbers X sta P8ZP_SCRATCH_W1 sty P8ZP_SCRATCH_W1+1 lda #FL_ONE_const jsr MOVFM lda P8ZP_SCRATCH_W1 ldy P8ZP_SCRATCH_W1+1 jsr FSUB ldx P8ZP_SCRATCH_W1 ldy P8ZP_SCRATCH_W1+1 jmp MOVMF .pend fmath_float1 .byte 0,0,0,0,0 ; storage for a mflpt5 value fmath_float2 .byte 0,0,0,0,0 ; storage for a mflpt5 value var_fac1_less_f .proc ; -- is the float in FAC1 < the variable AY? Result in A. Clobbers X. jsr FCOMP cmp #255 beq + lda #0 rts + lda #1 rts .pend var_fac1_lesseq_f .proc ; -- is the float in FAC1 <= the variable AY? Result in A. Clobbers X. jsr FCOMP cmp #0 beq + cmp #255 beq + lda #0 rts + lda #1 rts .pend var_fac1_greater_f .proc ; -- is the float in FAC1 > the variable AY? Result in A. Clobbers X. jsr FCOMP cmp #1 beq + lda #0 rts + lda #1 rts .pend var_fac1_greatereq_f .proc ; -- is the float in FAC1 >= the variable AY? Result in A. Clobbers X. jsr FCOMP cmp #0 beq + cmp #1 beq + lda #0 rts + lda #1 rts .pend var_fac1_equal_f .proc ; -- are the floats numbers in FAC1 and the variable AY identical? Result in A. Clobbers X. jsr FCOMP and #1 eor #1 rts .pend var_fac1_notequal_f .proc ; -- are the floats numbers in FAC1 and the variable AY *not* identical? Result in A. Clobbers X. jsr FCOMP and #1 rts .pend vars_equal_f .proc ; -- are the mflpt5 numbers in P8ZP_SCRATCH_W1 and AY identical? Result in A sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy #0 lda (P8ZP_SCRATCH_W1),y cmp (P8ZP_SCRATCH_W2),y bne _false iny lda (P8ZP_SCRATCH_W1),y cmp (P8ZP_SCRATCH_W2),y bne _false iny lda (P8ZP_SCRATCH_W1),y cmp (P8ZP_SCRATCH_W2),y bne _false iny lda (P8ZP_SCRATCH_W1),y cmp (P8ZP_SCRATCH_W2),y bne _false iny lda (P8ZP_SCRATCH_W1),y cmp (P8ZP_SCRATCH_W2),y bne _false lda #1 rts _false lda #0 rts .pend vars_less_f .proc ; -- is float in AY < float in P8ZP_SCRATCH_W2 ? Result in A. Clobbers X. jsr MOVFM lda P8ZP_SCRATCH_W2 ldy P8ZP_SCRATCH_W2+1 jsr FCOMP cmp #255 bne + lda #1 rts + lda #0 rts .pend vars_lesseq_f .proc ; -- is float in AY <= float in P8ZP_SCRATCH_W2 ? Result in A. Clobbers X. jsr MOVFM lda P8ZP_SCRATCH_W2 ldy P8ZP_SCRATCH_W2+1 jsr FCOMP cmp #255 bne + - lda #1 rts + cmp #0 beq - lda #0 rts .pend less_f .proc ; -- is f1 < f2? Result in A. Clobbers X. jsr compare_floats cmp #255 beq compare_floats._return_true bne compare_floats._return_false .pend lesseq_f .proc ; -- is f1 <= f2? Result in A. Clobbers X. jsr compare_floats cmp #255 beq compare_floats._return_true cmp #0 beq compare_floats._return_true bne compare_floats._return_false .pend greater_f .proc ; -- is f1 > f2? Result in A. Clobbers X. jsr compare_floats cmp #1 beq compare_floats._return_true bne compare_floats._return_false .pend greatereq_f .proc ; -- is f1 >= f2? Result in A. Clobbers X. jsr compare_floats cmp #1 beq compare_floats._return_true cmp #0 beq compare_floats._return_true bne compare_floats._return_false .pend set_array_float_from_fac1 .proc ; -- set the float in FAC1 in the array (index in A, array in P8ZP_SCRATCH_W1) ; clobbers X sta P8ZP_SCRATCH_B1 asl a asl a clc adc P8ZP_SCRATCH_B1 ldy P8ZP_SCRATCH_W1+1 clc adc P8ZP_SCRATCH_W1 bcc + iny + tax jmp MOVMF .pend set_0_array_float .proc ; -- set a float in an array to zero (index in A, array in P8ZP_SCRATCH_W1) sta P8ZP_SCRATCH_B1 asl a asl a clc adc P8ZP_SCRATCH_B1 tay lda #0 sta (P8ZP_SCRATCH_W1),y iny sta (P8ZP_SCRATCH_W1),y iny sta (P8ZP_SCRATCH_W1),y iny sta (P8ZP_SCRATCH_W1),y iny sta (P8ZP_SCRATCH_W1),y rts .pend set_array_float .proc ; -- set a float in an array to a value (index in A, float in P8ZP_SCRATCH_W1, array in P8ZP_SCRATCH_W2) sta P8ZP_SCRATCH_B1 asl a asl a clc adc P8ZP_SCRATCH_B1 adc P8ZP_SCRATCH_W2 ldy P8ZP_SCRATCH_W2+1 bcc + iny + jmp copy_float ; -- copies the 5 bytes of the mflt value pointed to by SCRATCH_ZPWORD1, ; into the 5 bytes pointed to by A/Y. Clobbers A,Y. .pend pushFAC1 .proc ;-- push floating point in FAC onto the cpu stack ; save return address pla sta P8ZP_SCRATCH_W2 pla sta P8ZP_SCRATCH_W2+1 ldx #floats.floats_temp_var jsr floats.MOVMF lda floats.floats_temp_var pha lda floats.floats_temp_var+1 pha lda floats.floats_temp_var+2 pha lda floats.floats_temp_var+3 pha lda floats.floats_temp_var+4 pha ; re-push return address lda P8ZP_SCRATCH_W2+1 pha lda P8ZP_SCRATCH_W2 pha rts .pend popFAC .proc ; -- pop floating point value from cpu stack into FAC1 or FAC2 ( ; carry flag clear=FAC1, carry set=FAC2 ; save return address pla sta P8ZP_SCRATCH_W2 pla sta P8ZP_SCRATCH_W2+1 pla sta floats.floats_temp_var+4 pla sta floats.floats_temp_var+3 pla sta floats.floats_temp_var+2 pla sta floats.floats_temp_var+1 pla sta floats.floats_temp_var lda #floats.floats_temp_var bcs + jsr floats.MOVFM jmp ++ + jsr floats.CONUPK + ; re-push return address lda P8ZP_SCRATCH_W2+1 pha lda P8ZP_SCRATCH_W2 pha rts .pend ; source: library:/prog8lib/cx16/floats.p8:192 %asminclude "library:c64/floats_funcs.asm" ; --- floating point builtin functions func_sign_f_into_A .proc jsr MOVFM jmp SIGN .pend func_swap_f .proc ; -- swap floats pointed to by SCRATCH_ZPWORD1, SCRATCH_ZPWORD2 ldy #4 - lda (P8ZP_SCRATCH_W1),y pha lda (P8ZP_SCRATCH_W2),y sta (P8ZP_SCRATCH_W1),y pla sta (P8ZP_SCRATCH_W2),y dey bpl - rts .pend func_reverse_f .proc ; --- reverse an array of floats (array in P8ZP_SCRATCH_W1, num elements in A) _left_index = P8ZP_SCRATCH_W2 _right_index = P8ZP_SCRATCH_W2+1 _loop_count = P8ZP_SCRATCH_REG pha jsr a_times_5 sec sbc #5 sta _right_index lda #0 sta _left_index pla lsr a sta _loop_count _loop ; push the left indexed float on the stack ldy _left_index lda (P8ZP_SCRATCH_W1),y pha iny lda (P8ZP_SCRATCH_W1),y pha iny lda (P8ZP_SCRATCH_W1),y pha iny lda (P8ZP_SCRATCH_W1),y pha iny lda (P8ZP_SCRATCH_W1),y pha ; copy right index float to left index float ldy _right_index lda (P8ZP_SCRATCH_W1),y ldy _left_index sta (P8ZP_SCRATCH_W1),y inc _left_index inc _right_index ldy _right_index lda (P8ZP_SCRATCH_W1),y ldy _left_index sta (P8ZP_SCRATCH_W1),y inc _left_index inc _right_index ldy _right_index lda (P8ZP_SCRATCH_W1),y ldy _left_index sta (P8ZP_SCRATCH_W1),y inc _left_index inc _right_index ldy _right_index lda (P8ZP_SCRATCH_W1),y ldy _left_index sta (P8ZP_SCRATCH_W1),y inc _left_index inc _right_index ldy _right_index lda (P8ZP_SCRATCH_W1),y ldy _left_index sta (P8ZP_SCRATCH_W1),y ; pop the float off the stack into the right index float ldy _right_index pla sta (P8ZP_SCRATCH_W1),y dey pla sta (P8ZP_SCRATCH_W1),y dey pla sta (P8ZP_SCRATCH_W1),y dey pla sta (P8ZP_SCRATCH_W1),y dey pla sta (P8ZP_SCRATCH_W1),y inc _left_index lda _right_index sec sbc #9 sta _right_index dec _loop_count bne _loop rts .pend a_times_5 .proc sta P8ZP_SCRATCH_B1 asl a asl a clc adc P8ZP_SCRATCH_B1 rts .pend func_any_f_into_A .proc jsr a_times_5 jmp prog8_lib.func_any_b_into_A .pend func_all_f_into_A .proc jsr a_times_5 jmp prog8_lib.func_all_b_into_A .pend func_any_f_stack .proc jsr a_times_5 jmp prog8_lib.func_any_b_stack .pend func_all_f_stack .proc jsr a_times_5 jmp prog8_lib.func_all_b_stack .pend func_abs_f_into_FAC1 .proc jsr MOVFM jmp ABS .pend func_sqrt_into_FAC1 .proc jsr MOVFM jmp SQR .pend containment_floatarray .proc ; -- check if a value exists in a float array. ; parameters: FAC1: value to check, P8ZP_SCRATCH_W1: address of the word array, Y = length of array (>=1). ; returns boolean 0/1 in A. sty P8ZP_SCRATCH_REG ldx #floats.floats_temp_var jsr floats.MOVMF ldx P8ZP_SCRATCH_REG ldy #0 - lda floats.floats_temp_var cmp (P8ZP_SCRATCH_W1),y bne _firstmiss iny lda floats.floats_temp_var+1 cmp (P8ZP_SCRATCH_W1),y bne _secondmiss iny lda floats.floats_temp_var+2 cmp (P8ZP_SCRATCH_W1),y bne _thirdmiss iny lda floats.floats_temp_var+3 cmp (P8ZP_SCRATCH_W1),y bne _fourthmiss iny lda floats.floats_temp_var+4 cmp (P8ZP_SCRATCH_W1),y bne _fifthmiss lda #1 rts _firstmiss iny _secondmiss iny _thirdmiss iny _fourthmiss iny _fifthmiss iny dex bne - lda #0 rts .pend ; source: library:/prog8lib/shared_floats_functions.p8:5 asmsub print(float value @FAC1) clobbers(A,X,Y) { print .proc ; source: library:/prog8lib/shared_floats_functions.p8:7 %asm {{ jsr tostr ldy #0 - lda (P8ZP_SCRATCH_W1),y beq + jsr cbm.CHROUT iny bne - + rts .pend ; source: library:/prog8lib/shared_floats_functions.p8:19 asmsub tostr(float value @FAC1) clobbers(X) -> str @AY { tostr .proc ; source: library:/prog8lib/shared_floats_functions.p8:21 %asm {{ jsr FOUT sta P8ZP_SCRATCH_W1 sty P8ZP_SCRATCH_W1+1 ldy #0 lda (P8ZP_SCRATCH_W1),y cmp #' ' bne + inc P8ZP_SCRATCH_W1 bne + inc P8ZP_SCRATCH_W1+1 + lda P8ZP_SCRATCH_W1 ldy P8ZP_SCRATCH_W1+1 rts .pend ; source: library:/prog8lib/shared_floats_functions.p8:54 sub sin(float angle) -> float { sin .proc ; statements ; source: library:/prog8lib/shared_floats_functions.p8:55 %asm {{ lda #angle jsr MOVFM jmp SIN ; variables .section BSS .send BSS ; non-zeropage variables without initialization value .section BSS angle .fill 5 .send BSS .pend ; source: library:/prog8lib/shared_floats_functions.p8:114 sub rad(float angle) -> float { rad .proc ; statements ; source: library:/prog8lib/shared_floats_functions.p8:116 %asm {{ lda #angle jsr MOVFM lda #<_pi_div_180 ldy #>_pi_div_180 jmp FMULT _pi_div_180 .byte 123, 14, 250, 53, 18 ; pi / 180 ; variables .section BSS .send BSS ; non-zeropage variables without initialization value .section BSS angle .fill 5 .send BSS .pend ; source: library:/prog8lib/shared_floats_functions.p8:218 inline asmsub push(float value @FAC1) { ; source: library:/prog8lib/shared_floats_functions.p8:224 inline asmsub pop() -> float @FAC1 { .pend ; ---- block: 'test_stack' ---- test_stack .proc ; source: library:/prog8lib/test_stack.p8:5 test_stack { ; source: library:/prog8lib/test_stack.p8:6 %option no_symbol_prefixing, ignore_unused ; source: library:/prog8lib/test_stack.p8:8 asmsub test() { test .proc ; source: library:/prog8lib/test_stack.p8:9 %asm {{ lda #13 jsr txt.chrout lda #'-' ldy #12 - jsr txt.chrout dey bne - lda #13 jsr txt.chrout lda #'s' jsr txt.chrout lda #'p' jsr txt.chrout lda #'=' jsr txt.chrout tsx txa jsr txt.print_ub lda #13 jsr txt.chrout lda #'-' ldy #12 - jsr txt.chrout dey bne - lda #13 jmp txt.chrout .pend .pend ; ---- block: 'math' ---- math .proc ; source: library:/prog8lib/math.p8:5 math { ; source: library:/prog8lib/math.p8:6 %option no_symbol_prefixing, ignore_unused ; source: library:/prog8lib/math.p8:8 %asminclude "library:math.asm" ; Internal Math library routines - always included by the compiler ; Generic machine independent 6502 code. ; ; some more interesting routines can be found here: ; http://6502org.wikidot.com/software-math ; http://codebase64.org/doku.php?id=base:6502_6510_maths ; https://github.com/TobyLobster/multiply_test ; https://github.com/TobyLobster/sqrt_test multiply_bytes .proc ; -- multiply 2 bytes A and Y, result as byte in A (signed or unsigned) ; https://github.com/TobyLobster/multiply_test/blob/main/tests/mult29.a _multiplicand = P8ZP_SCRATCH_B1 _multiplier = P8ZP_SCRATCH_REG sty _multiplicand lsr a sta _multiplier lda #0 ldx #2 - bcc + clc adc _multiplicand + ror a ror _multiplier bcc + clc adc _multiplicand + ror a ror _multiplier bcc + clc adc _multiplicand + ror a ror _multiplier bcc + clc adc _multiplicand + ror a ror _multiplier dex bne - ; tay ; if you want 16 bits result in AY, enable this again lda _multiplier rts .pend multiply_words .proc ; -- multiply two 16-bit words into a 32-bit result (signed and unsigned) ; input: A/Y = first 16-bit number, multiply_words.multiplier = second 16-bit number ; output: multiply_words.result, 4-bytes/32-bits product, LSB order (low-to-high) low 16 bits also in AY. ; NOTE: the result (which includes the multiplier parameter on entry) is a 4-byte array. ; this routine could be faster if we could stick that into zeropage, ; but there currently is no way to use 4 consecutive bytes in ZP (without disabling irq and saving/restoring them)... ; mult62.a ; from: https://github.com/TobyLobster/multiply_test/blob/main/tests/mult62.a ; based on Dr Jefyll, http://forum.6502.org/viewtopic.php?f=9&t=689&start=0#p19958 ; - adjusted to use fixed zero page addresses ; - removed 'decrement to avoid clc' as this is slower on average ; - rearranged memory use to remove final memory copy and give LSB first order to result ; - removed temp zp storage bytes ; - unrolled the outer loop ; - unrolled the two inner loops once ; ; 16 bit x 16 bit unsigned multiply, 32 bit result ; Average cycles: ~442 ? ; 93 bytes _multiplicand = P8ZP_SCRATCH_W2 ; 2 bytes multiplier = result ; 16 bit x 16 bit unsigned multiply, 32 bit result ; ; On Entry: ; (multiplier, multiplier+1): two byte multiplier, four bytes needed for result ; (multiplicand, multiplicand+1): two byte multiplicand ; On Exit: ; (result, result+1, result+2, result+3): product sta _multiplicand sty _multiplicand+1 lda #0 ; sta result+2 ; 16 bits of zero in A, result+2 ; Note: First 8 shifts are A -> result+2 -> result ; Final 8 shifts are A -> result+2 -> result+1 ; --- 1st byte --- ldy #4 ; count for inner loop lsr result ; inner loop (8 times) _inner_loop ; first time bcc + tax ; retain A lda result+2 clc adc _multiplicand sta result+2 txa ; recall A adc _multiplicand+1 + ror a ; shift ror result+2 ror result ; second time bcc + tax ; retain A lda result+2 clc adc _multiplicand sta result+2 txa ; recall A adc _multiplicand+1 + ror a ; shift ror result+2 ror result dey bne _inner_loop ; go back for 1 more shift? ; --- 2nd byte --- ldy #4 ; count for inner loop lsr result+1 ; inner loop (8 times) _inner_loop2 ; first time bcc + tax ; retain A lda result+2 clc adc _multiplicand sta result+2 txa ; recall A adc _multiplicand+1 + ror a ; shift ror result+2 ror result+1 ; second time bcc + tax ; retain A lda result+2 clc adc _multiplicand sta result+2 txa ; recall A adc _multiplicand+1 + ror a ; shift ror result+2 ror result+1 dey bne _inner_loop2 ; go back for 1 more shift? sta result+3 ; ms byte of hi-word of result lda result ldy result+1 rts result .byte 0,0,0,0 .pend divmod_b_asm .proc ; signed byte division: make everything positive and fix sign afterwards sta P8ZP_SCRATCH_B1 tya eor P8ZP_SCRATCH_B1 php ; save sign lda P8ZP_SCRATCH_B1 bpl + eor #$ff sec adc #0 ; make it positive + pha tya bpl + eor #$ff sec adc #0 ; make it positive tay + pla jsr divmod_ub_asm sta _remainder plp bpl + tya eor #$ff sec adc #0 ; negate result tay + rts _remainder .byte 0 .pend divmod_ub_asm .proc ; -- divide A by Y, result quotient in Y, remainder in A (unsigned) ; division by zero will result in quotient = 255 and remainder = original number sty P8ZP_SCRATCH_REG sta P8ZP_SCRATCH_B1 lda #0 ldx #8 asl P8ZP_SCRATCH_B1 - rol a cmp P8ZP_SCRATCH_REG bcc + sbc P8ZP_SCRATCH_REG + rol P8ZP_SCRATCH_B1 dex bne - ldy P8ZP_SCRATCH_B1 rts .pend divmod_w_asm .proc ; signed word division: make everything positive and fix sign afterwards sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 lda P8ZP_SCRATCH_W1+1 eor P8ZP_SCRATCH_W2+1 php ; save sign lda P8ZP_SCRATCH_W1+1 bpl + lda #0 sec sbc P8ZP_SCRATCH_W1 sta P8ZP_SCRATCH_W1 lda #0 sbc P8ZP_SCRATCH_W1+1 sta P8ZP_SCRATCH_W1+1 + lda P8ZP_SCRATCH_W2+1 bpl + lda #0 sec sbc P8ZP_SCRATCH_W2 sta P8ZP_SCRATCH_W2 lda #0 sbc P8ZP_SCRATCH_W2+1 sta P8ZP_SCRATCH_W2+1 + tay lda P8ZP_SCRATCH_W2 jsr divmod_uw_asm plp ; restore sign bpl + sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 lda #0 sec sbc P8ZP_SCRATCH_W2 pha lda #0 sbc P8ZP_SCRATCH_W2+1 tay pla + rts .pend divmod_uw_asm .proc ; -- divide two unsigned words (16 bit each) into 16 bit results ; input: P8ZP_SCRATCH_W1 in ZP: 16 bit number, A/Y: 16 bit divisor ; output: P8ZP_SCRATCH_W2 in ZP: 16 bit remainder, A/Y: 16 bit division result ; division by zero will result in quotient = 65535 and remainder = divident dividend = P8ZP_SCRATCH_W1 remainder = P8ZP_SCRATCH_W2 result = dividend ;save memory by reusing divident to store the result sta _divisor sty _divisor+1 lda #0 ;preset remainder to 0 sta remainder sta remainder+1 ldx #16 ;repeat for each bit: ... - asl dividend ;dividend lb & hb*2, msb -> Carry rol dividend+1 rol remainder ;remainder lb & hb * 2 + msb from carry rol remainder+1 lda remainder sec sbc _divisor ;substract divisor to see if it fits in tay ;lb result -> Y, for we may need it later lda remainder+1 sbc _divisor+1 bcc + ;if carry=0 then divisor didn't fit in yet sta remainder+1 ;else save substraction result as new remainder, sty remainder inc result ;and INCrement result cause divisor fit in 1 times + dex bne - lda result ldy result+1 rts _divisor .word 0 .pend randword .proc ; -- 16 bit pseudo random number generator into AY ; default seed = $00c2 $1137 ; routine from https://codebase64.org/doku.php?id=base:x_abc_random_number_generator_8_16_bit inc x1 clc x1=*+1 lda #$00 ;x1 c1=*+1 eor #$c2 ;c1 a1=*+1 eor #$11 ;a1 sta a1 b1=*+1 adc #$37 ;b1 sta b1 lsr a eor a1 adc c1 sta c1 ldy b1 rts .pend randbyte = randword ; -- 8 bit pseudo random number generator into A (by just reusing randword) ; ----------- optimized multiplications (in-place A (byte) and ?? (word)) : --------- mul_byte_3 .proc ; A = A + A*2 sta P8ZP_SCRATCH_REG asl a clc adc P8ZP_SCRATCH_REG rts .pend mul_word_3 .proc ; AY = AY*2 + AY sta P8ZP_SCRATCH_W1 sty P8ZP_SCRATCH_W1+1 sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 asl a rol P8ZP_SCRATCH_W1+1 clc adc P8ZP_SCRATCH_W2 sta P8ZP_SCRATCH_W1 lda P8ZP_SCRATCH_W1+1 adc P8ZP_SCRATCH_W2+1 tay lda P8ZP_SCRATCH_W1 rts .pend mul_byte_5 .proc ; A = A*4 + A sta P8ZP_SCRATCH_REG asl a asl a clc adc P8ZP_SCRATCH_REG rts .pend mul_word_5 .proc ; AY = AY*4 + AY sta P8ZP_SCRATCH_W1 sty P8ZP_SCRATCH_W1+1 sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 asl a rol P8ZP_SCRATCH_W1+1 asl a rol P8ZP_SCRATCH_W1+1 clc adc P8ZP_SCRATCH_W2 sta P8ZP_SCRATCH_W1 lda P8ZP_SCRATCH_W1+1 adc P8ZP_SCRATCH_W2+1 tay lda P8ZP_SCRATCH_W1 rts .pend mul_byte_6 .proc ; A = (A*2 + A)*2 sta P8ZP_SCRATCH_REG asl a clc adc P8ZP_SCRATCH_REG asl a rts .pend mul_word_6 .proc ; AY = (AY*2 + AY)*2 sta P8ZP_SCRATCH_W1 sty P8ZP_SCRATCH_W1+1 sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 asl a rol P8ZP_SCRATCH_W1+1 clc adc P8ZP_SCRATCH_W2 sta P8ZP_SCRATCH_W1 tay lda P8ZP_SCRATCH_W1+1 adc P8ZP_SCRATCH_W2+1 sta P8ZP_SCRATCH_W1+1 tya asl a rol P8ZP_SCRATCH_W1+1 ldy P8ZP_SCRATCH_W1+1 rts .pend mul_byte_7 .proc ; A = A*8 - A sta P8ZP_SCRATCH_REG asl a asl a asl a sec sbc P8ZP_SCRATCH_REG rts .pend mul_word_7 .proc ; AY = AY*8 - AY sta P8ZP_SCRATCH_W1 sty P8ZP_SCRATCH_W1+1 sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 asl a rol P8ZP_SCRATCH_W1+1 asl a rol P8ZP_SCRATCH_W1+1 asl a rol P8ZP_SCRATCH_W1+1 sec sbc P8ZP_SCRATCH_W2 sta P8ZP_SCRATCH_W1 lda P8ZP_SCRATCH_W1+1 sbc P8ZP_SCRATCH_W2+1 tay lda P8ZP_SCRATCH_W1 rts .pend mul_byte_9 .proc ; A = A*8 + A sta P8ZP_SCRATCH_REG asl a asl a asl a clc adc P8ZP_SCRATCH_REG rts .pend mul_word_9 .proc ; AY = AY*8 + AY sta P8ZP_SCRATCH_W1 sty P8ZP_SCRATCH_W1+1 sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 asl a rol P8ZP_SCRATCH_W1+1 asl a rol P8ZP_SCRATCH_W1+1 asl a rol P8ZP_SCRATCH_W1+1 clc adc P8ZP_SCRATCH_W2 sta P8ZP_SCRATCH_W1 lda P8ZP_SCRATCH_W1+1 adc P8ZP_SCRATCH_W2+1 tay lda P8ZP_SCRATCH_W1 rts rts .pend mul_byte_10 .proc ; A=(A*4 + A)*2 sta P8ZP_SCRATCH_REG asl a asl a clc adc P8ZP_SCRATCH_REG asl a rts .pend mul_word_10 .proc ; AY=(AY*4 + AY)*2 sta P8ZP_SCRATCH_W1 sty P8ZP_SCRATCH_W1+1 sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 asl a rol P8ZP_SCRATCH_W1+1 asl a rol P8ZP_SCRATCH_W1+1 clc adc P8ZP_SCRATCH_W2 sta P8ZP_SCRATCH_W1 lda P8ZP_SCRATCH_W1+1 adc P8ZP_SCRATCH_W2+1 sta P8ZP_SCRATCH_W1+1 lda P8ZP_SCRATCH_W1 asl a rol P8ZP_SCRATCH_W1+1 ldy P8ZP_SCRATCH_W1+1 rts .pend mul_byte_11 .proc ; A=(A*2 + A)*4 - A sta P8ZP_SCRATCH_REG asl a clc adc P8ZP_SCRATCH_REG asl a asl a sec sbc P8ZP_SCRATCH_REG rts .pend ; mul_word_11 is skipped (too much code) mul_byte_12 .proc ; A=(A*2 + A)*4 sta P8ZP_SCRATCH_REG asl a clc adc P8ZP_SCRATCH_REG asl a asl a rts .pend mul_word_12 .proc ; AY=(AY*2 + AY)*4 sta P8ZP_SCRATCH_W1 sty P8ZP_SCRATCH_W1+1 sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 asl a rol P8ZP_SCRATCH_W1+1 clc adc P8ZP_SCRATCH_W2 sta P8ZP_SCRATCH_W1 lda P8ZP_SCRATCH_W1+1 adc P8ZP_SCRATCH_W2+1 sta P8ZP_SCRATCH_W1+1 lda P8ZP_SCRATCH_W1 asl a rol P8ZP_SCRATCH_W1+1 asl a rol P8ZP_SCRATCH_W1+1 ldy P8ZP_SCRATCH_W1+1 rts .pend mul_byte_13 .proc ; A=(A*2 + A)*4 + A sta P8ZP_SCRATCH_REG asl a clc adc P8ZP_SCRATCH_REG asl a asl a clc adc P8ZP_SCRATCH_REG rts .pend ; mul_word_13 is skipped (too much code) mul_byte_14 .proc ; A=(A*8 - A)*2 sta P8ZP_SCRATCH_REG asl a asl a asl a sec sbc P8ZP_SCRATCH_REG asl a rts .pend ; mul_word_14 is skipped (too much code) mul_byte_15 .proc ; A=A*16 - A sta P8ZP_SCRATCH_REG asl a asl a asl a asl a sec sbc P8ZP_SCRATCH_REG rts .pend mul_word_15 .proc ; AY = AY * 16 - AY sta P8ZP_SCRATCH_W1 sty P8ZP_SCRATCH_W1+1 sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 asl a rol P8ZP_SCRATCH_W1+1 asl a rol P8ZP_SCRATCH_W1+1 asl a rol P8ZP_SCRATCH_W1+1 asl a rol P8ZP_SCRATCH_W1+1 sec sbc P8ZP_SCRATCH_W2 sta P8ZP_SCRATCH_W1 lda P8ZP_SCRATCH_W1+1 sbc P8ZP_SCRATCH_W2+1 tay lda P8ZP_SCRATCH_W1 rts .pend mul_byte_20 .proc ; A=(A*4 + A)*4 sta P8ZP_SCRATCH_REG asl a asl a clc adc P8ZP_SCRATCH_REG asl a asl a rts .pend mul_word_20 .proc ; AY = AY * 10 * 2 jsr mul_word_10 sty P8ZP_SCRATCH_REG asl a rol P8ZP_SCRATCH_REG ldy P8ZP_SCRATCH_REG rts .pend mul_byte_25 .proc ; A=(A*2 + A)*8 + A sta P8ZP_SCRATCH_REG asl a clc adc P8ZP_SCRATCH_REG asl a asl a asl a clc adc P8ZP_SCRATCH_REG rts .pend mul_word_25 .proc ; AY = (AY*2 + AY) *8 + AY sta P8ZP_SCRATCH_W1 sty P8ZP_SCRATCH_W1+1 sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 asl a rol P8ZP_SCRATCH_W1+1 clc adc P8ZP_SCRATCH_W2 sta P8ZP_SCRATCH_W1 lda P8ZP_SCRATCH_W1+1 adc P8ZP_SCRATCH_W2+1 sta P8ZP_SCRATCH_W1+1 lda P8ZP_SCRATCH_W1 asl a rol P8ZP_SCRATCH_W1+1 asl a rol P8ZP_SCRATCH_W1+1 asl a rol P8ZP_SCRATCH_W1+1 clc adc P8ZP_SCRATCH_W2 sta P8ZP_SCRATCH_W1 lda P8ZP_SCRATCH_W1+1 adc P8ZP_SCRATCH_W2+1 tay lda P8ZP_SCRATCH_W1 rts .pend mul_byte_40 .proc and #7 tay lda _forties,y rts _forties .byte 0*40, 1*40, 2*40, 3*40, 4*40, 5*40, 6*40, 7*40 & 255 .pend mul_word_40 .proc ; AY = (AY*4 + AY)*8 sta P8ZP_SCRATCH_W1 sty P8ZP_SCRATCH_W1+1 sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 asl a rol P8ZP_SCRATCH_W1+1 asl a rol P8ZP_SCRATCH_W1+1 clc adc P8ZP_SCRATCH_W2 sta P8ZP_SCRATCH_W1 lda P8ZP_SCRATCH_W1+1 adc P8ZP_SCRATCH_W2+1 asl P8ZP_SCRATCH_W1 rol a asl P8ZP_SCRATCH_W1 rol a asl P8ZP_SCRATCH_W1 rol a tay lda P8ZP_SCRATCH_W1 rts .pend mul_byte_50 .proc and #7 tay lda _fifties, y rts _fifties .byte 0*50, 1*50, 2*50, 3*50, 4*50, 5*50, 6*50 & 255, 7*50 & 255 .pend mul_word_50 .proc ; AY = AY * 25 * 2 jsr mul_word_25 sty P8ZP_SCRATCH_REG asl a rol P8ZP_SCRATCH_REG ldy P8ZP_SCRATCH_REG rts .pend mul_byte_80 .proc and #3 tay lda _eighties, y rts _eighties .byte 0*80, 1*80, 2*80, 3*80 .pend mul_word_80 .proc ; AY = AY * 40 * 2 jsr mul_word_40 sty P8ZP_SCRATCH_REG asl a rol P8ZP_SCRATCH_REG ldy P8ZP_SCRATCH_REG rts .pend mul_byte_100 .proc and #3 tay lda _hundreds, y rts _hundreds .byte 0*100, 1*100, 2*100, 3*100 & 255 .pend mul_word_100 .proc ; AY = AY * 25 * 4 jsr mul_word_25 sty P8ZP_SCRATCH_REG asl a rol P8ZP_SCRATCH_REG asl a rol P8ZP_SCRATCH_REG ldy P8ZP_SCRATCH_REG rts .pend mul_word_320 .proc ; AY = A * 256 + A * 64 (msb in Y doesn't matter) sta P8ZP_SCRATCH_B1 ldy #0 sty P8ZP_SCRATCH_REG asl a rol P8ZP_SCRATCH_REG asl a rol P8ZP_SCRATCH_REG asl a rol P8ZP_SCRATCH_REG asl a rol P8ZP_SCRATCH_REG asl a rol P8ZP_SCRATCH_REG asl a rol P8ZP_SCRATCH_REG pha clc lda P8ZP_SCRATCH_B1 adc P8ZP_SCRATCH_REG tay pla rts .pend mul_word_640 .proc ; AY = (A * 2 * 320) (msb in Y doesn't matter) asl a jmp mul_word_320 .pend ; ----------- end optimized multiplications ----------- ; support for bit shifting that is too large to be unrolled: lsr_byte_A .proc ; -- lsr signed byte in A times the value in Y cpy #0 beq + cmp #0 bpl lsr_ubyte_A - sec ror a dey bne - + rts .pend lsr_ubyte_A .proc ; -- lsr unsigned byte in A times the value in Y cpy #0 beq + - lsr a dey bne - + rts .pend asl_byte_A .proc ; -- asl any byte in A times the value in Y cpy #0 beq + - asl a dey bne - + rts .pend lsr_word_AY .proc ; -- lsr signed word in AY times the value in X cpx #0 beq + cpy #0 bpl lsr_uword_AY sty P8ZP_SCRATCH_B1 - sec ror P8ZP_SCRATCH_B1 ror a dex bne - ldy P8ZP_SCRATCH_B1 + rts .pend lsr_uword_AY .proc ; -- lsr unsigned word in AY times the value in X cpx #0 beq + sty P8ZP_SCRATCH_B1 - lsr P8ZP_SCRATCH_B1 ror a dex bne - ldy P8ZP_SCRATCH_B1 + rts .pend asl_word_AY .proc ; -- asl any word in AY times the value in X cpx #0 beq + sty P8ZP_SCRATCH_B1 - asl a rol P8ZP_SCRATCH_B1 dex bne - ldy P8ZP_SCRATCH_B1 + rts .pend square .proc ; -- calculate square of signed word (actually -255..255) in AY, result in AY ; routine by Lee Davison, source: http://6502.org/source/integers/square.htm ; using this routine is a lot faster as doing a regular multiplication (for words) ; ; Calculates the 16 bit unsigned integer square of the signed 16 bit integer in ; Numberl/Numberh. The result is always in the range 0 to 65025 and is held in ; Squarel/Squareh ; ; The maximum input range is only +/-255 and no checking is done to ensure that ; this is so. ; ; This routine is useful if you are trying to draw circles as for any circle ; ; x^2+y^2=r^2 where x and y are the co-ordinates of any point on the circle and ; r is the circle radius numberl = P8ZP_SCRATCH_W1 ; number to square low byte numberh = P8ZP_SCRATCH_W1+1 ; number to square high byte squarel = P8ZP_SCRATCH_W2 ; square low byte squareh = P8ZP_SCRATCH_W2+1 ; square high byte tempsq = P8ZP_SCRATCH_B1 ; temp byte for intermediate result sta numberl sty numberh lda #$00 ; clear a sta squarel ; clear square low byte ; (no need to clear the high byte, it gets shifted out) lda numberl ; get number low byte ldx numberh ; get number high byte bpl _nonneg ; if +ve don't negate it ; else do a two's complement eor #$ff ; invert sec ; +1 adc #$00 ; and add it _nonneg: sta tempsq ; save abs(number) ldx #$08 ; set bit count _nextr2bit: asl squarel ; low byte *2 rol squareh ; high byte *2+carry from low asl a ; shift number byte bcc _nosqadd ; don't do add if c = 0 tay ; save a clc ; clear carry for add lda tempsq ; get number adc squarel ; add number^2 low byte sta squarel ; save number^2 low byte lda #$00 ; clear a adc squareh ; add number^2 high byte sta squareh ; save number^2 high byte tya ; get a back _nosqadd: dex ; decrement bit count bne _nextr2bit ; go do next bit lda squarel ldy squareh rts .pend ; source: library:/prog8lib/math.p8:10 asmsub sin8u(ubyte angle @A) clobbers(Y) -> ubyte @A { sin8u .proc ; source: library:/prog8lib/math.p8:11 %asm {{ tay lda _sinecos8u,y rts _sinecos8u .byte trunc(128.0 + 127.5 * sin(range(256+64) * rad(360.0/256.0))) .pend ; source: library:/prog8lib/math.p8:19 asmsub cos8u(ubyte angle @A) clobbers(Y) -> ubyte @A { cos8u .proc ; source: library:/prog8lib/math.p8:20 %asm {{ tay lda sin8u._sinecos8u+64,y rts .pend ; source: library:/prog8lib/math.p8:27 asmsub sin8(ubyte angle @A) clobbers(Y) -> byte @A { sin8 .proc ; source: library:/prog8lib/math.p8:28 %asm {{ tay lda _sinecos8,y rts _sinecos8 .char trunc(127.0 * sin(range(256+64) * rad(360.0/256.0))) .pend ; source: library:/prog8lib/math.p8:36 asmsub cos8(ubyte angle @A) clobbers(Y) -> byte @A { cos8 .proc ; source: library:/prog8lib/math.p8:37 %asm {{ tay lda sin8._sinecos8+64,y rts .pend ; source: library:/prog8lib/math.p8:44 asmsub sinr8u(ubyte radians @A) clobbers(Y) -> ubyte @A { sinr8u .proc ; source: library:/prog8lib/math.p8:45 %asm {{ tay lda _sinecosR8u,y rts _sinecosR8u .byte trunc(128.0 + 127.5 * sin(range(180+45) * rad(360.0/180.0))) .pend ; source: library:/prog8lib/math.p8:53 asmsub cosr8u(ubyte radians @A) clobbers(Y) -> ubyte @A { cosr8u .proc ; source: library:/prog8lib/math.p8:54 %asm {{ tay lda sinr8u._sinecosR8u+45,y rts .pend ; source: library:/prog8lib/math.p8:61 asmsub sinr8(ubyte radians @A) clobbers(Y) -> byte @A { sinr8 .proc ; source: library:/prog8lib/math.p8:62 %asm {{ tay lda _sinecosR8,y rts _sinecosR8 .char trunc(127.0 * sin(range(180+45) * rad(360.0/180.0))) .pend ; source: library:/prog8lib/math.p8:70 asmsub cosr8(ubyte radians @A) clobbers(Y) -> byte @A { cosr8 .proc ; source: library:/prog8lib/math.p8:71 %asm {{ tay lda sinr8._sinecosR8+45,y rts .pend ; source: library:/prog8lib/math.p8:78 asmsub rnd() clobbers(Y) -> ubyte @A { rnd .proc ; source: library:/prog8lib/math.p8:79 %asm {{ jmp math.randbyte .pend ; source: library:/prog8lib/math.p8:84 asmsub rndw() -> uword @AY { rndw .proc ; source: library:/prog8lib/math.p8:85 %asm {{ jmp math.randword .pend ; source: library:/prog8lib/math.p8:108 asmsub rndseed(uword seed1 @AY, uword seed2 @R0) clobbers(A,Y) { rndseed .proc ; source: library:/prog8lib/math.p8:110 %asm {{ sta math.randword.x1 sty math.randword.c1 lda cx16.r0L sta math.randword.a1 lda cx16.r0H sta math.randword.b1 rts .pend ; source: library:/prog8lib/math.p8:121 asmsub log2(ubyte value @A) -> ubyte @Y { log2 .proc ; source: library:/prog8lib/math.p8:122 %asm {{ sta P8ZP_SCRATCH_B1 lda #$80 ldy #7 - bit P8ZP_SCRATCH_B1 beq + rts + dey bne + rts + lsr a bne - .pend ; source: library:/prog8lib/math.p8:137 asmsub log2w(uword value @AY) -> ubyte @Y { log2w .proc ; source: library:/prog8lib/math.p8:138 %asm {{ sta P8ZP_SCRATCH_W1 sty P8ZP_SCRATCH_W1+1 lda #<$8000 sta cx16.r0 lda #>$8000 sta cx16.r0+1 ldy #15 - lda P8ZP_SCRATCH_W1 and cx16.r0 sta P8ZP_SCRATCH_B1 lda P8ZP_SCRATCH_W1+1 and cx16.r0+1 ora P8ZP_SCRATCH_B1 beq + rts + dey bne + rts + lsr cx16.r0+1 ror cx16.r0 jmp - .pend ; source: library:/prog8lib/math.p8:163 asmsub mul16_last_upper() -> uword @AY { mul16_last_upper .proc ; source: library:/prog8lib/math.p8:171 %asm {{ lda multiply_words.result+2 ldy multiply_words.result+3 rts .pend ; source: library:/prog8lib/math.p8:212 asmsub direction_qd(ubyte quadrant @A, ubyte xdelta @X, ubyte ydelta @Y) -> ubyte @A { direction_qd .proc ; source: library:/prog8lib/math.p8:220 %asm {{ x_delta = cx16.r0L y_delta = cx16.r1L quadrant = cx16.r2L half_value = cx16.r3L region_number = cx16.r4L small = cx16.r5L large = cx16.r5H sta quadrant sty y_delta stx x_delta cpx y_delta bcs _XGreaterOrEqualY _XLessY: lda #16 sta region_number stx small sty large bne _DetermineRegion _XGreaterOrEqualY: lda #0 sta region_number stx large sty small _DetermineRegion: ; set A = small * 2.5 lda small lsr a sta half_value lda small asl a bcs _SmallerQuotient clc adc half_value bcs _SmallerQuotient cmp large bcc _LargerQuotient ; S * 2.5 > L _SmallerQuotient: ; set A = S * 1.25 lsr half_value lda small clc adc half_value cmp large bcc _Region1 ; if S * 1.25 < L then goto Region1 (L / S > 1.25) bcs _Region0 ; (L / S < 1.25) ; S * 2.5 < L _LargerQuotient: ; set A = S * 7.5 lda small asl a asl a asl a bcs _Region2 sec sbc half_value cmp large bcc _Region3 ; if S * 7.5 < L then goto Region3 (L / S > 7.5) jmp _Region2 ; (L / S < 7.5) _Region0: ; L / S < 1.25. d=3,9,15,21 jmp _LookupResult _Region1: ; 1.25 < L / S < 2.5. d=2,4,8,10,14,16,20,22 lda region_number clc adc #4 sta region_number bpl _LookupResult _Region2: ; 2.5 < L / S < 7.5. d=1,5,7,11,13,17,19,23 lda region_number clc adc #8 sta region_number bpl _LookupResult _Region3: ; 7.5 < L / S. d=0,6,12,18 lda region_number clc adc #12 sta region_number _LookupResult: lda quadrant clc adc region_number tax lda _quadrant_region_to_direction,x rts _quadrant_region_to_direction: .byte 9, 3,15,21 .byte 10, 2,14,22 .byte 11, 1,13,23 .byte 12, 0,12, 0 .byte 9, 3,15,21 .byte 8, 4,16,20 .byte 7, 5,17,19 .byte 6, 6,18,18 .pend ; source: library:/prog8lib/math.p8:335 asmsub atan2(ubyte x1 @R0, ubyte y1 @R1, ubyte x2 @R2, ubyte y2 @R3) -> ubyte @A { atan2 .proc ; source: library:/prog8lib/math.p8:341 %asm {{ x1 = cx16.r0L y1 = cx16.r1L x2 = cx16.r2L y2 = cx16.r3L octant = cx16.r4L ;; temporary zeropage variable lda x1 sec sbc x2 bcs *+4 eor #$ff tax rol octant lda y1 sec sbc y2 bcs *+4 eor #$ff tay rol octant lda log2_tab,x sec sbc log2_tab,y bcc *+4 eor #$ff tax lda octant rol a and #%111 tay lda atan_tab,x eor octant_adjust,y rts octant_adjust .byte %00111111 ;; x+,y+,|x|>|y| .byte %00000000 ;; x+,y+,|x|<|y| .byte %11000000 ;; x+,y-,|x|>|y| .byte %11111111 ;; x+,y-,|x|<|y| .byte %01000000 ;; x-,y+,|x|>|y| .byte %01111111 ;; x-,y+,|x|<|y| .byte %10111111 ;; x-,y-,|x|>|y| .byte %10000000 ;; x-,y-,|x|<|y| ;;;;;;;; atan(2^(x/32))*128/pi ;;;;;;;; atan_tab .byte $00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$01,$01,$01 .byte $01,$01,$01,$01,$01,$01,$01,$01 .byte $01,$01,$01,$01,$01,$01,$01,$01 .byte $01,$01,$01,$01,$01,$01,$01,$01 .byte $01,$01,$01,$01,$01,$02,$02,$02 .byte $02,$02,$02,$02,$02,$02,$02,$02 .byte $02,$02,$02,$02,$02,$02,$02,$02 .byte $03,$03,$03,$03,$03,$03,$03,$03 .byte $03,$03,$03,$03,$03,$04,$04,$04 .byte $04,$04,$04,$04,$04,$04,$04,$04 .byte $05,$05,$05,$05,$05,$05,$05,$05 .byte $06,$06,$06,$06,$06,$06,$06,$06 .byte $07,$07,$07,$07,$07,$07,$08,$08 .byte $08,$08,$08,$08,$09,$09,$09,$09 .byte $09,$0a,$0a,$0a,$0a,$0b,$0b,$0b .byte $0b,$0c,$0c,$0c,$0c,$0d,$0d,$0d .byte $0d,$0e,$0e,$0e,$0e,$0f,$0f,$0f .byte $10,$10,$10,$11,$11,$11,$12,$12 .byte $12,$13,$13,$13,$14,$14,$15,$15 .byte $15,$16,$16,$17,$17,$17,$18,$18 .byte $19,$19,$19,$1a,$1a,$1b,$1b,$1c .byte $1c,$1c,$1d,$1d,$1e,$1e,$1f,$1f ;;;;;;;; log2(x)*32 ;;;;;;;; log2_tab .byte $00,$00,$20,$32,$40,$4a,$52,$59 .byte $60,$65,$6a,$6e,$72,$76,$79,$7d .byte $80,$82,$85,$87,$8a,$8c,$8e,$90 .byte $92,$94,$96,$98,$99,$9b,$9d,$9e .byte $a0,$a1,$a2,$a4,$a5,$a6,$a7,$a9 .byte $aa,$ab,$ac,$ad,$ae,$af,$b0,$b1 .byte $b2,$b3,$b4,$b5,$b6,$b7,$b8,$b9 .byte $b9,$ba,$bb,$bc,$bd,$bd,$be,$bf .byte $c0,$c0,$c1,$c2,$c2,$c3,$c4,$c4 .byte $c5,$c6,$c6,$c7,$c7,$c8,$c9,$c9 .byte $ca,$ca,$cb,$cc,$cc,$cd,$cd,$ce .byte $ce,$cf,$cf,$d0,$d0,$d1,$d1,$d2 .byte $d2,$d3,$d3,$d4,$d4,$d5,$d5,$d5 .byte $d6,$d6,$d7,$d7,$d8,$d8,$d9,$d9 .byte $d9,$da,$da,$db,$db,$db,$dc,$dc .byte $dd,$dd,$dd,$de,$de,$de,$df,$df .byte $df,$e0,$e0,$e1,$e1,$e1,$e2,$e2 .byte $e2,$e3,$e3,$e3,$e4,$e4,$e4,$e5 .byte $e5,$e5,$e6,$e6,$e6,$e7,$e7,$e7 .byte $e7,$e8,$e8,$e8,$e9,$e9,$e9,$ea .byte $ea,$ea,$ea,$eb,$eb,$eb,$ec,$ec .byte $ec,$ec,$ed,$ed,$ed,$ed,$ee,$ee .byte $ee,$ee,$ef,$ef,$ef,$ef,$f0,$f0 .byte $f0,$f1,$f1,$f1,$f1,$f1,$f2,$f2 .byte $f2,$f2,$f3,$f3,$f3,$f3,$f4,$f4 .byte $f4,$f4,$f5,$f5,$f5,$f5,$f5,$f6 .byte $f6,$f6,$f6,$f7,$f7,$f7,$f7,$f7 .byte $f8,$f8,$f8,$f8,$f9,$f9,$f9,$f9 .byte $f9,$fa,$fa,$fa,$fa,$fa,$fb,$fb .byte $fb,$fb,$fb,$fc,$fc,$fc,$fc,$fc .byte $fd,$fd,$fd,$fd,$fd,$fd,$fe,$fe .byte $fe,$fe,$fe,$ff,$ff,$ff,$ff,$ff .pend ; source: library:/prog8lib/math.p8:468 asmsub diff(ubyte v1 @A, ubyte v2 @Y) -> ubyte @A { diff .proc ; source: library:/prog8lib/math.p8:470 %asm {{ sty P8ZP_SCRATCH_REG sec sbc P8ZP_SCRATCH_REG bcs + eor #255 inc a + rts .pend ; source: library:/prog8lib/math.p8:481 asmsub diffw(uword w1 @R0, uword w2 @AY) -> uword @AY { diffw .proc ; source: library:/prog8lib/math.p8:483 %asm {{ sec sbc cx16.r0L sta cx16.r0L tya sbc cx16.r0H sta cx16.r0H bcs + eor #255 sta cx16.r0H lda cx16.r0L eor #255 inc a sta cx16.r0L bne + inc cx16.r0H + lda cx16.r0L ldy cx16.r0H rts .pend .pend ; ---- block: 'prog8_lib' ---- prog8_lib .proc ; source: library:/prog8lib/prog8_lib.p8:3 prog8_lib { ; source: library:/prog8lib/prog8_lib.p8:4 %option no_symbol_prefixing, ignore_unused ; source: library:/prog8lib/prog8_lib.p8:6 %asminclude "library:prog8_lib.asm" ; Internal library routines - always included by the compiler ; Generic machine independent 6502 code. orig_stackpointer .byte 0 ; stores the Stack pointer register at program start read_byte_from_address_in_AY_into_A .proc sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy #0 lda (P8ZP_SCRATCH_W2),y rts .pend write_byte_X_to_address_in_AY .proc sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy #0 txa sta (P8ZP_SCRATCH_W2),y rts .pend reg_less_uw .proc ; AY < P8ZP_SCRATCH_W2? cpy P8ZP_SCRATCH_W2+1 bcc _true bne _false cmp P8ZP_SCRATCH_W2 bcc _true _false lda #0 rts _true lda #1 rts .pend reg_less_w .proc ; -- AY < P8ZP_SCRATCH_W2? cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #$80 + bmi _true lda #0 rts _true lda #1 rts .pend reg_lesseq_uw .proc ; AY <= P8ZP_SCRATCH_W2? cpy P8ZP_SCRATCH_W2+1 beq + bcc _true lda #0 rts + cmp P8ZP_SCRATCH_W2 bcc _true beq _true lda #0 rts _true lda #1 rts .pend reg_lesseq_w .proc ; -- P8ZP_SCRATCH_W2 <= AY ? (note: order different from other routines) cmp P8ZP_SCRATCH_W2 tya sbc P8ZP_SCRATCH_W2+1 bvc + eor #$80 + bpl + lda #0 rts + lda #1 rts .pend memcopy16_up .proc ; -- copy memory UP from (P8ZP_SCRATCH_W1) to (P8ZP_SCRATCH_W2) of length X/Y (16-bit, X=lo, Y=hi) ; clobbers register A,X,Y source = P8ZP_SCRATCH_W1 dest = P8ZP_SCRATCH_W2 length = P8ZP_SCRATCH_B1 ; (and SCRATCH_ZPREG) stx length sty length+1 ldx length ; move low byte of length into X bne + ; jump to start if X > 0 dec length ; subtract 1 from length + ldy #0 ; set Y to 0 - lda (source),y ; set A to whatever (source) points to offset by Y sta (dest),y ; move A to location pointed to by (dest) offset by Y iny ; increment Y bne + ; if Y<>0 then (rolled over) then still moving bytes inc source+1 ; increment hi byte of source inc dest+1 ; increment hi byte of dest + dex ; decrement X (lo byte counter) bne - ; if X<>0 then move another byte dec length ; we've moved 255 bytes, dec length bpl - ; if length is still positive go back and move more rts ; done .pend memset .proc ; -- fill memory from (P8ZP_SCRATCH_W1), length XY, with value in A. ; clobbers X, Y stx P8ZP_SCRATCH_B1 sty _save_reg ldy #0 ldx _save_reg beq _lastpage _fullpage sta (P8ZP_SCRATCH_W1),y iny bne _fullpage inc P8ZP_SCRATCH_W1+1 ; next page dex bne _fullpage _lastpage ldy P8ZP_SCRATCH_B1 beq + - dey sta (P8ZP_SCRATCH_W1),y bne - + rts _save_reg .byte 0 .pend memsetw .proc ; -- fill memory from (P8ZP_SCRATCH_W1) number of words in P8ZP_SCRATCH_W2, with word value in AY. ; clobbers A, X, Y sta _mod1+1 ; self-modify sty _mod1b+1 ; self-modify sta _mod2+1 ; self-modify sty _mod2b+1 ; self-modify ldx P8ZP_SCRATCH_W1 stx P8ZP_SCRATCH_B1 ldx P8ZP_SCRATCH_W1+1 inx stx P8ZP_SCRATCH_REG ; second page ldy #0 ldx P8ZP_SCRATCH_W2+1 beq _lastpage _fullpage _mod1 lda #0 ; self-modified sta (P8ZP_SCRATCH_W1),y ; first page sta (P8ZP_SCRATCH_B1),y ; second page iny _mod1b lda #0 ; self-modified sta (P8ZP_SCRATCH_W1),y ; first page sta (P8ZP_SCRATCH_B1),y ; second page iny bne _fullpage inc P8ZP_SCRATCH_W1+1 ; next page pair inc P8ZP_SCRATCH_W1+1 ; next page pair inc P8ZP_SCRATCH_B1+1 ; next page pair inc P8ZP_SCRATCH_B1+1 ; next page pair dex bne _fullpage _lastpage ldx P8ZP_SCRATCH_W2 beq _done ldy #0 - _mod2 lda #0 ; self-modified sta (P8ZP_SCRATCH_W1), y inc P8ZP_SCRATCH_W1 bne _mod2b inc P8ZP_SCRATCH_W1+1 _mod2b lda #0 ; self-modified sta (P8ZP_SCRATCH_W1), y inc P8ZP_SCRATCH_W1 bne + inc P8ZP_SCRATCH_W1+1 + dex bne - _done rts .pend ror2_mem_ub .proc ; -- in-place 8-bit ror of byte at memory location in AY sta P8ZP_SCRATCH_W1 sty P8ZP_SCRATCH_W1+1 ldy #0 lda (P8ZP_SCRATCH_W1),y lsr a bcc + ora #$80 + sta (P8ZP_SCRATCH_W1),y rts .pend rol2_mem_ub .proc ; -- in-place 8-bit rol of byte at memory location in AY sta P8ZP_SCRATCH_W1 sty P8ZP_SCRATCH_W1+1 ldy #0 lda (P8ZP_SCRATCH_W1),y cmp #$80 rol a sta (P8ZP_SCRATCH_W1),y rts .pend strcpy .proc ; copy a string (must be 0-terminated) from A/Y to (P8ZP_SCRATCH_W1) ; it is assumed the target string is large enough. ; returns the length of the string that was copied in Y. sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 ldy #$ff - iny lda (P8ZP_SCRATCH_W2),y sta (P8ZP_SCRATCH_W1),y bne - rts .pend strcmp_expression .proc ; -- compare strings, result in A lda _arg_s2 ldy _arg_s2+1 sta P8ZP_SCRATCH_W2 sty P8ZP_SCRATCH_W2+1 lda _arg_s1 ldy _arg_s1+1 jmp strcmp_mem _arg_s1 .word 0 _arg_s2 .word 0 .pend strcmp_mem .proc ; -- compares strings in s1 (AY) and s2 (P8ZP_SCRATCH_W2). ; Returns -1,0,1 in A, depeding on the ordering. Clobbers Y. sta P8ZP_SCRATCH_W1 sty P8ZP_SCRATCH_W1+1 ldy #0 _loop lda (P8ZP_SCRATCH_W1),y bne + lda (P8ZP_SCRATCH_W2),y bne _return_minusone beq _return + cmp (P8ZP_SCRATCH_W2),y bcc _return_minusone bne _return_one inc P8ZP_SCRATCH_W1 bne + inc P8ZP_SCRATCH_W1+1 + inc P8ZP_SCRATCH_W2 bne _loop inc P8ZP_SCRATCH_W2+1 bne _loop _return_one lda #1 _return rts _return_minusone lda #-1 rts .pend strlen .proc ; -- returns the number of bytes in the string in AY, in Y. Clobbers A. sta P8ZP_SCRATCH_W1 sty P8ZP_SCRATCH_W1+1 ldy #0 - lda (P8ZP_SCRATCH_W1),y beq + iny bne - + rts .pend containment_bytearray .proc ; -- check if a value exists in a byte array. ; parameters: P8ZP_SCRATCH_W1: address of the byte array, A = byte to check, Y = length of array (>=1). ; returns boolean 0/1 in A. dey - cmp (P8ZP_SCRATCH_W1),y beq + dey cpy #255 bne - lda #0 rts + lda #1 rts .pend containment_wordarray .proc ; -- check if a value exists in a word array. ; parameters: P8ZP_SCRATCH_W1: value to check, P8ZP_SCRATCH_W2: address of the word array, Y = length of array (>=1). ; returns boolean 0/1 in A. dey tya asl a tay - lda P8ZP_SCRATCH_W1 cmp (P8ZP_SCRATCH_W2),y bne + lda P8ZP_SCRATCH_W1+1 iny cmp (P8ZP_SCRATCH_W2),y beq _found dey + dey dey cpy #254 bne - lda #0 rts _found lda #1 rts .pend arraycopy_split_to_normal_words .proc ; P8ZP_SCRATCH_W1 = start of lsb array ; P8ZP_SCRATCH_W2 = start of msb array ; AY = start of normal word target array ; X = number of elements to copy sta _modlsb+1 sty _modlsb+2 clc adc #1 bne + iny + sta _modmsb+1 sty _modmsb+2 ldy #0 - lda (P8ZP_SCRATCH_W1),y _modlsb sta $ffff ; modified lsb store lda _modlsb+1 clc adc #2 sta _modlsb+1 bcc + inc _modlsb+2 + lda (P8ZP_SCRATCH_W2),y _modmsb sta $ffff ; modified msb store lda _modmsb+1 clc adc #2 sta _modmsb+1 bcc + inc _modmsb+2 + iny dex bne - rts .pend arraycopy_normal_to_split_words .proc ; P8ZP_SCRATCH_W1 = start of target lsb array ; P8ZP_SCRATCH_W2 = start of target msb array ; AY = start of normal word source array ; X = number of elements to copy sta _modsrclsb+1 sty _modsrclsb+2 clc adc #1 bne + iny + sta _modsrcmsb+1 sty _modsrcmsb+2 ldy #0 _modsrclsb lda $ffff ; modified lsb read sta (P8ZP_SCRATCH_W1),y lda _modsrclsb+1 clc adc #2 sta _modsrclsb+1 bcc + inc _modsrclsb+2 + _modsrcmsb lda $ffff ; modnfied msb read sta (P8ZP_SCRATCH_W2),y lda _modsrcmsb+1 clc adc #2 sta _modsrcmsb+1 bcc + inc _modsrcmsb+2 + iny dex bne _modsrclsb rts .pend memcopy_small .proc ; copy up to a single page (256 bytes) of memory. ; note: only works for NON-OVERLAPPING memory regions! ; P8ZP_SCRATCH_W1 = from address ; P8ZP_SCRATCH_W2 = destination address ; Y = number of bytes to copy (where 0 means 256) cpy #0 beq _fullpage dey beq _lastbyte _loop lda (P8ZP_SCRATCH_W1),y sta (P8ZP_SCRATCH_W2),y dey bne _loop _lastbyte lda (P8ZP_SCRATCH_W1),y sta (P8ZP_SCRATCH_W2),y rts _fullpage lda (P8ZP_SCRATCH_W1),y sta (P8ZP_SCRATCH_W2),y dey bne _fullpage rts .pend ; source: library:/prog8lib/prog8_lib.p8:7 %asminclude "library:prog8_funcs.asm" ; ---- builtin functions func_any_b_into_A .proc ; -- any(array), array in P8ZP_SCRATCH_W1, num bytes in A sta _cmp_mod+1 ; self-modifying code ldy #0 - lda (P8ZP_SCRATCH_W1),y bne _got_any iny _cmp_mod cpy #255 ; modified bne - lda #0 rts _got_any lda #1 rts .pend func_all_b_into_A .proc ; -- all(array), array in P8ZP_SCRATCH_W1, num bytes in A sta _cmp_mod+1 ; self-modifying code ldy #0 - lda (P8ZP_SCRATCH_W1),y beq _got_not_all iny _cmp_mod cpy #255 ; modified bne - lda #1 _got_not_all rts .pend func_any_w_into_A .proc asl a jmp func_any_b_into_A .pend func_all_w_into_A .proc ; -- all(warray), array in P8ZP_SCRATCH_W1, num bytes in A asl a ; times 2 because of word sta _cmp_mod+1 ; self-modifying code ldy #0 - lda (P8ZP_SCRATCH_W1),y bne + iny lda (P8ZP_SCRATCH_W1),y bne ++ lda #0 rts + iny + iny _cmp_mod cpy #255 ; modified bne - lda #1 rts .pend abs_b_into_A .proc ; -- A = abs(A) cmp #0 bmi + rts + eor #$ff clc adc #1 rts .pend abs_w_into_AY .proc ; -- AY = abs(AY) cpy #0 bmi + rts + eor #$ff pha tya eor #$ff tay pla clc adc #1 bcc + iny + rts .pend func_sign_b_into_A .proc cmp #0 beq _zero bmi _neg lda #1 _zero rts _neg lda #-1 rts .pend func_sign_ub_into_A .proc cmp #0 bne _pos rts _pos lda #1 rts .pend func_sign_uw_into_A .proc cpy #0 beq _possibly_zero _pos lda #1 rts _possibly_zero cmp #0 bne _pos rts .pend func_sign_w_into_A .proc cpy #0 beq _possibly_zero bmi _neg _pos lda #1 rts _neg lda #-1 rts _possibly_zero cmp #0 bne _pos rts .pend func_sqrt16_into_A .proc ; integer square root ; http://6502org.wikidot.com/software-math-sqrt ; https://github.com/TobyLobster/sqrt_test/blob/main/sqrt/sqrt7.a ; Tweaked by TobyLobster and 0xC0DE to be smaller and faster _numl = P8ZP_SCRATCH_W1 _numh = P8ZP_SCRATCH_W1+1 _loop_counter = P8ZP_SCRATCH_REG _root = P8ZP_SCRATCH_B1 sta _numl sty _numh ldx #$ff stx _loop_counter inx stx _root sec _loop lda _numh sbc #$40 tay txa sbc _root bcc + sty _numh bcs ++ + txa + rol _root asl _numl rol _numh rol a asl _numl rol _numh rol a tax lsr _loop_counter bne _loop lda _root rts .pend func_sort_ub .proc ; 8bit unsigned sort ; sorting subroutine coded by mats rosengren (mats.rosengren@esa.int) ; input: address of array to sort in P8ZP_SCRATCH_W1, length in S ; first, put pointer BEFORE array sta P8ZP_SCRATCH_B1 lda P8ZP_SCRATCH_W1 bne + dec P8ZP_SCRATCH_W1+1 + dec P8ZP_SCRATCH_W1 _sortloop ldy P8ZP_SCRATCH_B1 ;start of subroutine sort lda (P8ZP_SCRATCH_W1),y ;last value in (what is left of) sequence to be sorted sta P8ZP_SCRATCH_REG ;save value. will be over-written by largest number jmp _l2 _l1 dey beq _l3 lda (P8ZP_SCRATCH_W1),y cmp P8ZP_SCRATCH_W2+1 bcc _l1 _l2 sty P8ZP_SCRATCH_W2 ;index of potentially largest value sta P8ZP_SCRATCH_W2+1 ;potentially largest value jmp _l1 _l3 ldy P8ZP_SCRATCH_B1 ;where the largest value shall be put lda P8ZP_SCRATCH_W2+1 ;the largest value sta (P8ZP_SCRATCH_W1),y ;put largest value in place ldy P8ZP_SCRATCH_W2 ;index of free space lda P8ZP_SCRATCH_REG ;the over-written value sta (P8ZP_SCRATCH_W1),y ;put the over-written value in the free space dec P8ZP_SCRATCH_B1 ;end of the shorter sequence still left bne _sortloop ;start working with the shorter sequence rts .pend func_sort_b .proc ; 8bit signed sort ; sorting subroutine coded by mats rosengren (mats.rosengren@esa.int) ; input: address of array to sort in P8ZP_SCRATCH_W1, length in A ; first, put pointer BEFORE array sta P8ZP_SCRATCH_B1 lda P8ZP_SCRATCH_W1 bne + dec P8ZP_SCRATCH_W1+1 + dec P8ZP_SCRATCH_W1 _sortloop ldy P8ZP_SCRATCH_B1 ;start of subroutine sort lda (P8ZP_SCRATCH_W1),y ;last value in (what is left of) sequence to be sorted sta P8ZP_SCRATCH_REG ;save value. will be over-written by largest number jmp _l2 _l1 dey beq _l3 lda (P8ZP_SCRATCH_W1),y cmp P8ZP_SCRATCH_W2+1 bmi _l1 _l2 sty P8ZP_SCRATCH_W2 ;index of potentially largest value sta P8ZP_SCRATCH_W2+1 ;potentially largest value jmp _l1 _l3 ldy P8ZP_SCRATCH_B1 ;where the largest value shall be put lda P8ZP_SCRATCH_W2+1 ;the largest value sta (P8ZP_SCRATCH_W1),y ;put largest value in place ldy P8ZP_SCRATCH_W2 ;index of free space lda P8ZP_SCRATCH_REG ;the over-written value sta (P8ZP_SCRATCH_W1),y ;put the over-written value in the free space dec P8ZP_SCRATCH_B1 ;end of the shorter sequence still left bne _sortloop ;start working with the shorter sequence rts .pend func_sort_uw .proc ; 16bit unsigned sort ; sorting subroutine coded by mats rosengren (mats.rosengren@esa.int) ; input: address of array to sort in P8ZP_SCRATCH_W1, length in A ; first: subtract 2 of the pointer asl a sta P8ZP_SCRATCH_B1 lda P8ZP_SCRATCH_W1 sec sbc #2 sta P8ZP_SCRATCH_W1 bcs _sort_loop dec P8ZP_SCRATCH_W1+1 _sort_loop ldy P8ZP_SCRATCH_B1 ;start of subroutine sort lda (P8ZP_SCRATCH_W1),y ;last value in (what is left of) sequence to be sorted sta _work3 ;save value. will be over-written by largest number iny lda (P8ZP_SCRATCH_W1),y sta _work3+1 dey jmp _l2 _l1 dey dey beq _l3 iny lda (P8ZP_SCRATCH_W1),y dey cmp P8ZP_SCRATCH_W2+1 bne + lda (P8ZP_SCRATCH_W1),y cmp P8ZP_SCRATCH_W2 + bcc _l1 _l2 sty _work1 ;index of potentially largest value lda (P8ZP_SCRATCH_W1),y sta P8ZP_SCRATCH_W2 ;potentially largest value iny lda (P8ZP_SCRATCH_W1),y sta P8ZP_SCRATCH_W2+1 dey jmp _l1 _l3 ldy P8ZP_SCRATCH_B1 ;where the largest value shall be put lda P8ZP_SCRATCH_W2 ;the largest value sta (P8ZP_SCRATCH_W1),y ;put largest value in place iny lda P8ZP_SCRATCH_W2+1 sta (P8ZP_SCRATCH_W1),y ldy _work1 ;index of free space lda _work3 ;the over-written value sta (P8ZP_SCRATCH_W1),y ;put the over-written value in the free space iny lda _work3+1 sta (P8ZP_SCRATCH_W1),y dey dec P8ZP_SCRATCH_B1 ;end of the shorter sequence still left dec P8ZP_SCRATCH_B1 bne _sort_loop ;start working with the shorter sequence rts _work1 .byte 0 _work3 .word 0 .pend func_sort_w .proc ; 16bit signed sort ; sorting subroutine coded by mats rosengren (mats.rosengren@esa.int) ; input: address of array to sort in P8ZP_SCRATCH_W1, length in A ; first: subtract 2 of the pointer asl a sta P8ZP_SCRATCH_B1 lda P8ZP_SCRATCH_W1 sec sbc #2 sta P8ZP_SCRATCH_W1 bcs _sort_loop dec P8ZP_SCRATCH_W1+1 _sort_loop ldy P8ZP_SCRATCH_B1 ;start of subroutine sort lda (P8ZP_SCRATCH_W1),y ;last value in (what is left of) sequence to be sorted sta _work3 ;save value. will be over-written by largest number iny lda (P8ZP_SCRATCH_W1),y sta _work3+1 dey jmp _l2 _l1 dey dey beq _l3 lda (P8ZP_SCRATCH_W1),y cmp P8ZP_SCRATCH_W2 iny lda (P8ZP_SCRATCH_W1),y dey sbc P8ZP_SCRATCH_W2+1 bvc + eor #$80 + bmi _l1 _l2 sty _work1 ;index of potentially largest value lda (P8ZP_SCRATCH_W1),y sta P8ZP_SCRATCH_W2 ;potentially largest value iny lda (P8ZP_SCRATCH_W1),y sta P8ZP_SCRATCH_W2+1 dey jmp _l1 _l3 ldy P8ZP_SCRATCH_B1 ;where the largest value shall be put lda P8ZP_SCRATCH_W2 ;the largest value sta (P8ZP_SCRATCH_W1),y ;put largest value in place iny lda P8ZP_SCRATCH_W2+1 sta (P8ZP_SCRATCH_W1),y ldy _work1 ;index of free space lda _work3 ;the over-written value sta (P8ZP_SCRATCH_W1),y ;put the over-written value in the free space iny lda _work3+1 sta (P8ZP_SCRATCH_W1),y dey dec P8ZP_SCRATCH_B1 ;end of the shorter sequence still left dec P8ZP_SCRATCH_B1 bne _sort_loop ;start working with the shorter sequence rts _work1 .byte 0 _work3 .word 0 .pend func_reverse_b .proc ; --- reverse an array of bytes (in-place) ; inputs: pointer to array in P8ZP_SCRATCH_W1, length in A _index_right = P8ZP_SCRATCH_W2 _index_left = P8ZP_SCRATCH_W2+1 _loop_count = P8ZP_SCRATCH_REG sta _loop_count lsr _loop_count sec sbc #1 sta _index_right lda #0 sta _index_left _loop ldy _index_right lda (P8ZP_SCRATCH_W1),y pha ldy _index_left lda (P8ZP_SCRATCH_W1),y ldy _index_right sta (P8ZP_SCRATCH_W1),y pla ldy _index_left sta (P8ZP_SCRATCH_W1),y inc _index_left dec _index_right dec _loop_count bne _loop rts .pend func_reverse_w .proc ; --- reverse an array of words (in-place) ; inputs: pointer to array in P8ZP_SCRATCH_W1, length in A _index_first = P8ZP_SCRATCH_W2 _index_second = P8ZP_SCRATCH_W2+1 _loop_count = P8ZP_SCRATCH_REG pha asl a ; *2 because words sec sbc #2 sta _index_first lda #0 sta _index_second pla lsr a pha sta _loop_count ; first reverse the lsbs _loop_lo ldy _index_first lda (P8ZP_SCRATCH_W1),y pha ldy _index_second lda (P8ZP_SCRATCH_W1),y ldy _index_first sta (P8ZP_SCRATCH_W1),y pla ldy _index_second sta (P8ZP_SCRATCH_W1),y inc _index_second inc _index_second dec _index_first dec _index_first dec _loop_count bne _loop_lo ; now reverse the msbs dec _index_second inc _index_first inc _index_first inc _index_first pla sta _loop_count _loop_hi ldy _index_first lda (P8ZP_SCRATCH_W1),y pha ldy _index_second lda (P8ZP_SCRATCH_W1),y ldy _index_first sta (P8ZP_SCRATCH_W1),y pla ldy _index_second sta (P8ZP_SCRATCH_W1),y dec _index_second dec _index_second inc _index_first inc _index_first dec _loop_count bne _loop_hi rts .pend func_peekw .proc ; -- read the word value on the address in AY sta P8ZP_SCRATCH_W1 sty P8ZP_SCRATCH_W1+1 ldy #0 lda (P8ZP_SCRATCH_W1),y pha iny lda (P8ZP_SCRATCH_W1),y tay pla rts .pend func_pokew .proc ; -- store the word value in AY in the address in P8ZP_SCRATCH_W1 sty P8ZP_SCRATCH_REG ldy #0 sta (P8ZP_SCRATCH_W1),y iny lda P8ZP_SCRATCH_REG sta (P8ZP_SCRATCH_W1),y rts .pend func_clamp_byte .proc ; signed value in A, result in A ; minimum in P8ZP_SCRATCH_W1 ; maximum in P8ZP_SCRATCH_W1+1 tay sec sbc P8ZP_SCRATCH_W1+1 bvc + eor #$80 + bmi + lda P8ZP_SCRATCH_W1+1 tay jmp ++ + tya + sec sbc P8ZP_SCRATCH_W1 bvc + eor #$80 + bmi + tya rts + lda P8ZP_SCRATCH_W1 rts .pend func_clamp_ubyte .proc ; value in A, result in A ; minimum in P8ZP_SCRATCH_W1 ; maximum in P8ZP_SCRATCH_W1+1 cmp P8ZP_SCRATCH_W1+1 bcc + lda P8ZP_SCRATCH_W1+1 + cmp P8ZP_SCRATCH_W1 bcc + rts + lda P8ZP_SCRATCH_W1 rts .pend func_clamp_word .proc ; signed value in AY, result in AY ; minimum in P8ZP_SCRATCH_W1 ; maximum in P8ZP_SCRATCH_W2 sta P8ZP_SCRATCH_B1 sty P8ZP_SCRATCH_REG ldy P8ZP_SCRATCH_W2+1 lda P8ZP_SCRATCH_W2 cmp P8ZP_SCRATCH_B1 tya sbc P8ZP_SCRATCH_REG bvc + eor #$80 + bpl + lda P8ZP_SCRATCH_W2 ldy P8ZP_SCRATCH_W2+1 sta P8ZP_SCRATCH_B1 sty P8ZP_SCRATCH_REG + ldy P8ZP_SCRATCH_W1+1 lda P8ZP_SCRATCH_W1 cmp P8ZP_SCRATCH_B1 tya sbc P8ZP_SCRATCH_REG bvc + eor #$80 + bpl + ldy P8ZP_SCRATCH_REG lda P8ZP_SCRATCH_B1 rts + ldy P8ZP_SCRATCH_W1+1 lda P8ZP_SCRATCH_W1 rts .pend func_clamp_uword .proc ; value in AY, result in AY ; minimum in P8ZP_SCRATCH_W1 ; maximum in P8ZP_SCRATCH_W2 sta P8ZP_SCRATCH_B1 sty P8ZP_SCRATCH_REG cpy P8ZP_SCRATCH_W2+1 bcc ++ bne + cmp P8ZP_SCRATCH_W2 bcc ++ + beq + lda P8ZP_SCRATCH_W2 ldy P8ZP_SCRATCH_W2+1 sta P8ZP_SCRATCH_B1 sty P8ZP_SCRATCH_REG + ldy P8ZP_SCRATCH_REG lda P8ZP_SCRATCH_B1 cpy P8ZP_SCRATCH_W1+1 bcc ++ bne + cmp P8ZP_SCRATCH_W1 bcc ++ + beq + ldy P8ZP_SCRATCH_REG lda P8ZP_SCRATCH_B1 rts + ldy P8ZP_SCRATCH_W1+1 lda P8ZP_SCRATCH_W1 rts .pend .pend ; global float constants prog8_float_const_0 .byte $81, $00, $00, $00, $00 ; float 1.0 ; expression temp vars .section BSS .send BSS ; bss sections PROG8_VARSHIGH_RAMBANK = 1 prog8_bss_section_start .dsection BSS prog8_bss_section_size = * - prog8_bss_section_start .dsection slabs_BSS prog8_program_end ; end of program label for progend()