OK, the integration is done and the compiler can handle FOR loops now, even the monstrosity in the following program:
Code:
100 n = 1
110 m = 3
120 for i = n+1 to m+1 step m-2
130 print i
140 next i
The FOR statement compiles into:
Code:
00088 * 120 for i = n+1 to m+1 step m-2
0125 00089 L00120
00090 ifdef __TRACE
00091 ldx #120
00092 jsr Trace
00093 endif
00094 ifdef __ATLIN
0125 CE 0125 [3] 00095 ldx #L00120
0128 FF 0663 [6] 00096 stx ResLn_
00097 endif
00098
012B BD 0296 [9] 00099 jsr ForEnter
00100
012E 86 01 [2] 00101 ldaa #T00000>>8
0130 A7 04 [6] 00102 staa 4,X
0132 86 49 [2] 00103 ldaa #T00000&$FF
0134 A7 05 [6] 00104 staa 5,X
00105
0136 86 06 [2] 00106 ldaa #I_>>8
0138 A7 06 [6] 00107 staa 6,X
013A 86 75 [2] 00108 ldaa #I_&$FF
013C A7 07 [6] 00109 staa 7,X
00110
013E C6 01 [2] 00111 ldab #1
0140 4F [2] 00112 clra
0141 FB 0672 [4] 00113 addb N_+1
0144 B9 0671 [4] 00114 adca N_
00115
0147 20 46 (018F) [4] 00116 bra T00003
00117
0149 00118 T00000
0149 C6 01 [2] 00119 ldab #1
014B 4F [2] 00120 clra
014C FB 0674 [4] 00121 addb M_+1
014F B9 0673 [4] 00122 adca M_
0152 F7 066E [5] 00123 stab ITp00_+1
0155 B7 066D [5] 00124 staa ITp00_
00125
0158 F6 0674 [4] 00126 ldab M_+1
015B B6 0673 [4] 00127 ldaa M_
015E C0 02 [2] 00128 subb #2
0160 82 00 [2] 00129 sbca #0
0162 B7 066F [5] 00130 staa ITp01_
00131
0165 FB 0676 [4] 00132 addb I_+1
0168 B9 0675 [4] 00133 adca I_
00134
016B 7D 066F [6] 00135 tst ITp01_
016E 2B 0E (017E) [4] 00136 bmi T00004
00137
0170 B1 066D [4] 00138 cmpa ITp00_
0173 22 15 (018A) [4] 00139 bhi T00001
0175 25 16 (018D) [4] 00140 blo T00002
0177 F1 066E [4] 00141 cmpb ITp00_+1
017A 23 11 (018D) [4] 00142 bls T00002
017C 20 0C (018A) [4] 00143 bra T00001
00144
017E 00145 T00004
017E B1 066D [4] 00146 cmpa ITp00_
0181 25 07 (018A) [4] 00147 blo T00001
0183 22 08 (018D) [4] 00148 bhi T00002
0185 F1 066E [4] 00149 cmpb ITp00_+1
0188 24 03 (018D) [4] 00150 bhs T00002
00151
018A 00152 T00001
018A 7E 02D3 [3] 00153 jmp ForExit
00154
018D 00155 T00002
018D 31 [4] 00156 ins
018E 31 [4] 00157 ins
00158
018F 00159 T00003
018F B7 0675 [5] 00160 staa I_
0192 F7 0676 [5] 00161 stab I_+1