×   Main Menu ALL The 8BS News Manuals (New menu) Links Worth a Look Tools Disc and Basic Webring Site Map 8BS Guestbook Old Guest Book Me The Barnsley Rovers   
8-Bit Software

The BBC and Master Computer Public Domain Library

960F HIMEM=

Submitted by Steve Fewell

Description:

Call routine &96B9 to Set BASIC Text Pointer B to BASIC Text Pointer A value, check that the next non-space character
is an "=", and issue 'Mistake' error if it isn't. Get Result of the expression at BASIC Text Pointer B. Check that the
statement terminates correctly (with a '<cr>', ':' or 'ELSE'), (issue 'Syntax error if not terminated correctly), and convert
the numeric result value to Integer (or issue 'Type mismatch' error if the value is a String).

Set HIMEM (&06-&07) to the Integer results 2 LSB bytes (&2A-&2B).
Set the Stack Pointer to the HIMEM value.
Note: this will destroy any information currently on the stack.

Lastly, jump to &9005 to start processing the next program statement.


Disassembly for the HIMEM= routine

960F   032 185 150 20 B9 96 JSR &96B9
9612 * 165 042 A5 2A LDA &2A
9614   133 006 85 06 STA &06
9616   133 004 85 04 STA &04
9618 + 165 043 A5 2B LDA &2B
961A   133 007 85 07 STA &07
961C   133 005 85 05 STA &05
961E   128 027 80 1B BRA 27 --> &963B [JMP &9005] Process the next statement

Set Ptr B = Ptr A; Check for '='; Get Integer result of expression & check end of statement

96B9 F 032 070 155 20 46 9B JSR &9B46 Ptr B = Ptr A; Check for '=' & get result of expression; check end of statement
96BC ' 165 039 A5 27 LDA &27
96BE   ... Check if Float value & convert to Integer

 


 Back to 8BS
Or