Prev: A3FB Up: Map Next: A435
A408: check available memory, do out of memory error if no room
Used by the routines at A3B8, B1D1 and E422.
A408 C4 34 CPY $34 compare with bottom of string space high byte
A40A 90 28 BCC $A434 if less then exit (is ok)
A40C D0 04 BNE $A412 skip next test if greater (tested <)
high byte was =, now do low byte
A40E C5 33 CMP $33 compare with bottom of string space low byte
A410 90 22 BCC $A434 if less then exit (is ok)
address is > string storage ptr (oops!)
A412 48 PHA push address low byte
A413 A2 09 LDX #$09 set index to save $57 to $60 inclusive
A415 98 TYA copy address high byte (to push on stack)
save misc numeric work area
A416 48 PHA push byte
A417 B5 57 LDA $57,X get byte from $57 to $60
A419 CA DEX decrement index
A41A 10 FA BPL $A416 loop until all done
A41C 20 26 B5 JSR $B526 do garbage collection routine
restore misc numeric work area
A41F A2 F7 LDX #$F7 set index to restore bytes
A421 68 PLA pop byte
A422 95 61 STA $61,X save byte to $57 to $60
A424 E8 INX increment index
A425 30 FA BMI $A421 loop while -ve
A427 68 PLA pop address high byte
A428 A8 TAY copy back to Y
A429 68 PLA pop address low byte
A42A C4 34 CPY $34 compare with bottom of string space high byte
A42C 90 06 BCC $A434 if less then exit (is ok)
A42E D0 05 BNE $A435 if greater do out of memory error then warm start
high byte was =, now do low byte
A430 C5 33 CMP $33 compare with bottom of string space low byte
A432 B0 01 BCS $A435 if >= do out of memory error then warm start
ok exit, carry clear
A434 60 RTS
Prev: A3FB Up: Map Next: A435