; ---------------------------------------------------------------------------
 ; Zero page, Commodore stuff
 
+TXTPTR          := $3D          ; Pointer into BASIC source code
 TIME            := $A0          ; 60HZ clock
 FNAM_LEN        := $B7          ; Length of filename
 SECADR          := $B9          ; Secondary address
 
 ; ---------------------------------------------------------------------------
 ; Zero page, Commodore stuff
 
+TXTPTR          := $7A          ; Pointer into BASIC source code
 TIME            := $A0          ; 60 HZ clock
 FNAM_LEN        := $B7          ; Length of filename
 SECADR          := $B9          ; Secondary address
 
 ;
 ; Taken from a kernal disassembly done by myself in 2000/2001.
 ;
-; Ullrich von Bassewitz, 13.09.2001
+; 2001-09-13, Ullrich von Bassewitz
+; 2013-08-23, Greg King
 
 
 ;-----------------------------------------------------------------------------
 ExecReg         = $00
 IndReg          = $01
 
+TXTPTR          := $85          ; Far pointer into BASIC source code
+
 ; ---------------------------------------------------------------------------
 ; Screen size
 
 ;-----------------------------------------------------------------------------
 ; I/O Definitions
 
-; I/O  $d800: VIC
+; I/O  $d800: VIC-II
 
 VIC_SPR0_X      = $00
 VIC_SPR0_Y      = $01
 VIC_BG_COLOR3   = $24
 
 
-
 ; I/O  $da00: SID 6581
 
 SID_S1Lo        = $00
 SID_Read3       = $1C
 
 
-; I/O  $db00: CIA 6526 Inter Process Communication
+; I/O  $db00: CIA 6526, Inter Process Communication
 ; I/O  $dc00: CIA 6526
 
 .struct CIA
 .endstruct
 
 
-; Out video memory address
+;-----------------------------------------------------------------------------
+; Our video memory address
+
+COLOR_RAM       := $D400        ; System bank
+
 
-COLOR_RAM   = $D400                     ; System bank
+;-----------------------------------------------------------------------------
 
+BASIC_BUF       := $FB5E        ; Bank 0 location of command-line
+BASIC_BUF_LEN   = 162           ; Maximum length of command-line
 
 ; ---------------------------------------------------------------------------
 ; Zeropage stuff
 
-ExecReg         = $00
-IndReg          = $01
+ExecReg         := $00
+IndReg          := $01
+
+TXTPTR          := $85          ; Far pointer into BASIC source code
 
 ; ---------------------------------------------------------------------------
 ; Screen size
         DATA    .byte
 .endstruct
 
-; I/O  $db00: CIA 6526 Inter Process Communication
+
+; I/O  $db00: CIA 6526, Inter Process Communication
 ;
 ;       IPCcia          =       $db00
 
 ;       cia             =       $dc00
 
 
-
 ; I/O  $dd00: ACIA 6551
 ;
 ;       acia            =       $dd00
 ;       tpi2            =       $df00
 
 
+;-----------------------------------------------------------------------------
+
+BASIC_BUF       := $FA5E        ; Bank 1 location of command-line
+BASIC_BUF_LEN   = 162           ; Maximum length of command-line
 
 ; Zero page, Commodore stuff
 
 MEMSIZE         := $34          ; Size of memory installed
+TXTPTR          := $77          ; Pointer into BASIC source code
 TIME            := $8D          ; 60HZ clock
 KEY_COUNT       := $9E          ; Number of keys in input buffer
 RVS             := $9F          ; Reverse flag
 CURS_Y          := $D8          ; Cursor row
 FNADR           := $DA          ; Pointer to file name
 
+BASIC_BUF       := $200         ; Location of command-line
+BASIC_BUF_LEN   = 81            ; Maximum length of command-line
+
 KEY_BUF         := $26F         ; Keyboard buffer
 
 ;----------------------------------------------------------------------------
 
 ; Zero page, Commodore stuff
 
 TMPPTR          := $22          ; Temporary ptr used by BASIC
+TXTPTR          := $3B          ; Pointer into BASIC source code
 TIME            := $A3          ; 60HZ clock
 FNAM_LEN        := $AB          ; Length of filename
 LFN             := $AC          ; Logical file number
 
 ; ---------------------------------------------------------------------------
 ; Zero page, Commodore stuff
 
+TXTPTR          := $7A          ; Pointer into BASIC source code
 TIME            := $A0          ; 60HZ clock
 FNAM_LEN        := $B7          ; Length of filename
 SECADR          := $B9          ; Secondary address
 
--- /dev/null
+;
+; Platform-specific variables for the exec program-chaining function
+;
+
+.if     .defined (__C128__)
+        .include        "c128.inc"
+.elseif .defined (__C16__)
+        .include        "c16.inc"
+.elseif .defined (__C64__)
+        .include        "c64.inc"
+.elseif .defined (__CBM510__)
+        .include        "cbm510.inc"
+.elseif .defined (__CBM610__)
+        .include        "cbm610.inc"
+.elseif .defined (__PET__)
+        .include        "pet.inc"
+.elseif .defined (__PLUS4__)
+        .include        "plus4.inc"
+.else
+        .include        "vic20.inc"
+.endif
+
+        .export         _txtptr:zp, _basbuf, _basbuf_len:zp
+
+_txtptr         :=      TXTPTR
+
+_basbuf         :=      BASIC_BUF
+_basbuf_len     =       BASIC_BUF_LEN
 
 MAXARGS  = 10                   ; Maximum number of arguments allowed
 REM      = $8f                  ; BASIC token-code
 NAME_LEN = 16                   ; maximum length of command-name
-BASIC_BUF= $200
 
 
 ;---------------------------------------------------------------------------