Submitted by Steve Fewell
Call routine &BA3E to copy BASIC Text pointer A address to BASIC text pointer B, Check that the next character is '#'
('Missing #' error if not), set Y to the number after the '#' (the file channel number).
Store A (the file channel number, as &BA3E sets A to a copy of Y) to the 6502 stack.
Call routine &96AC to check for a comma ',' (issuing an error if not found), and get the Integer result of the
expression after the comma (issuing 'Type mismatch' error if a String value was found). The IWA now contains the ASCII
code of the character required to be output to the file.
Call &9B96 to check for the end of statement (at BASIC Text Pointer B). If the next character after the BPUT
parameter value is not ':', '<cr>' or 'ELSE-token' then issue 'Syntax error', as the statement was not terminated
Retrieve Y (the channel number) from the 6502 stack.
Set A to the LSB value of the IWA (location &2A; i.e. the ASCII code of the character to output to the file).
Call the Operating system OSBPUT routine (&FFD4) to carry out the file operation.
Jump to &9005 to execute the next BASIC statement in the program/command line.
|BEBD||>||032 062 186||20 3E BA||JSR &BA3E Copy PTR A to PTR B, check for '#', get file channel number & store it in Y|
|BEC1||032 172 150||20 AC 96||JSR &96AC Check for ',', get result of expression and convert result to Integer|
|BEC4||032 150 155||20 96 9B||JSR &9B96 Check for end of Statement (PTR B)|
|BEC8||*||165 042||A5 2A||LDA &2A|
|BECA||032 212 255||20 D4 FF||JSR &FFD4 OSBPUT (write a single byte to an open file)|
|BECD||128 220||80 DC||BRA -36 --> &BEAB [JMP &9005 Execute next statement]|