Hacker News new | ask | show | jobs
by DonHopkins 2835 days ago
And then there was Applesoft's assembly language extension mechanism: "&".

Enhancing Applesoft using ampersand routines: https://link.springer.com/content/pdf/10.3758/BF03203836.pdf

>Applesoft BASIC's ampersand (&) jump feature gives the programmer an easy and fast way to connect machine language routines to BASIC. When the Applesoft interpreter encounters an "&," it does an immediate and unconditional jump to location $3F5 (decimal 1013). This feature, originally described as being "intended for the computer's internal use only" and "not a proper APPLESOFT command" (Apple Computer, 1978, p. 123), has become the favorite procedure for executing machine language routines from a running Applesoft program.

1 comments

Most BASICs had something like that. Here's something from QBASIC documentation:

   Transfers control to a machine-language procedure.

   CALL ABSOLUTE ([argumentlist,] offset%)

       ▪ argumentlist    Arguments passed to a machine-language procedure
                         as offsets from the current data segment.
       ▪ offset%         The offset from the current code segment, set by
                         DEF SEG, to the starting location of the procedure.

   Example:
       'Calls routine for printing the screen to a local printer.
       DIM a%(2)
       DEF SEG = VARSEG(a%(0))
       FOR i% = 0 TO 2
          READ d%
          POKE VARPTR(a%(0)) + i%, d%
       NEXT i%
       DATA 205, 5, 203  : ' int 5  retf  'Machine-language code
                                          'for printing screen.
       CALL ABSOLUTE(VARPTR(a%(0)))
       DEF SEG
And before that, there was DEF USR: http://www.antonis.de/qbebooks/gwbasman/defusr.html