On Nov 21 2005, 22:27, Jules Richardson wrote:
BBC BASIC used P. too, although the manual in front of
me suggests
that it
wasn't until version 4 (circa 1985 probably) - I
don't think prior
versions
supported token abbreviations (version 3 may have;
this was produced
purely
for the US market).
No, all versions, from the original 1981 version, support
abbreviations.
The '?' token was used by BBC BASIC for peek
and poke as I recall.
Yes, that's right. '?' for byte values, and '!' for word values.
You
could do interesting things with them. For example,
?&400=0 means poke zero into (hex)0400
but &400?1=0 means poke zero into the address 1 higher than &400 --
this is useful if you replace either the '1' or the '&400' in my
example with a variable, and use it in a loop. Or set a variable to
the address of some buffer or control block, and then fill specific
entries in the control block with values:
800 DEF PROCdiskaccess
810 returncode=10:parm?drive:parm!1=buffer
820 IF format THEN PROCformatparms:GOTO 850
830 parm?5=3:IF rnotw THEN parm?6=&53 else parm?6=&4B
840 parm?7=track:parm?8=sector:parm?9=&21
850 A%=&7F:X%=parm:Y%=0:CALL OSWORD
[ result code processing and display here ]
890 ENDPROC
which is a piece of a disk sector editor program I wrote in November
1982 (according to the REMs at its head). That particular bit is the
procedure to set up a parameter block at an address "parm" (defined
further up the program) and call an OS routine called OSWORD which with
7F in A (and the address in X and Y, in this case it's in zero page)
calls the routine that accesses the 8271 disk controller. "CALL" in
BBC BASIC copies the variables A%, X%, and Y% into the obvious 6502
registers and does a JSR to the address following the "CALL" keyword.
All of which has very little to do with '?' as shorthand for PRINT!
--
Pete Peter Turnbull
Network Manager
University of York