4 ; Control flow handling
9 ;----- Overview -------------------------------------------------------------
56 [ :LNOT::DEF:ctrl__dfn
87 ; --- ctrl_endwhile ---
119 ; --- ctrl_otherwise ---
121 IMPORT ctrl_otherwise
147 ; --- ctrl__findDATA ---
149 ; On entry: All the normal things
151 ; On exit: R0 == *address* in file of next DATA
153 ; Use: Sets the internal data pointer to the first DATA statement
154 ; fromthe current position.
162 ; --- ctrl_restore ---
170 ; --- ctrl_setUpRegs ---
172 ; On entry: R7-R10 == position info
174 ; On exit: R0-R8 set up for sys call
175 ; R9,R10 == rvalue of first parameter
177 ; new position info, R7-R12
178 ; place to stracc free
180 ; Use: Sets up all the registers as required by a SYS or SYSCALL
183 IMPORT ctrl_setUpRegs
185 ; --- ctrl_resolveRegs ---
187 ; On entry: R0 == pointer to register block
189 ; On exit: CS if flags were required, CC otherwise
191 ; Use: Resolves the registers returned from a SYS or SYSCALL
192 ; into the appropriate variables. The code assumes that
193 ; we have possibly just read a TO command, and goes on
196 IMPORT ctrl_resolveRegs
200 ; OK, maybe it shouldn't be here. I don't really care.
202 ; Hack warning: This is a hack. We unwind express_read's stack and stuff
203 ; them away somewhere completely different.
239 ; --- ctrl_rightS ---
249 ; On entry: R0,R1 == lvalue to store in
250 ; R2,R3 == rvalue to write
252 ; If bit 31 of R1 is set, then for strings only, the old
253 ; string is NOT removed from the stracc. This is
254 ; so that variables can be restored after a procedure.
258 ; Use: Stores an rvalue into an lvalue.
264 ; On entry: R0,R1 == lvalue to read
266 ; On exit: R2,R3 == rvalue read from lvalue
268 ; Use: Loads the current value of the given lvalue.
272 ; --- ctrl_compare ---
274 ; On entry: R0,R1 == thing to compare
275 ; R2,R3 == thing to compare the other thing with
277 ; On exit: The flags indicate the result of the comparison
279 ; Use: Compares two things. Note that R3 contains the dominant
280 ; type. If it is comparing strings, the string in R0,R1
281 ; will be removed from stracc.
287 ;----- That's all, folks ----------------------------------------------------