; ---------------------------------------------------------------------------
; Zero page, Commodore stuff
-MEMSIZE := $34 ; Size of memory installed
+VARTAB := $2A ; Pointer to start of BASIC variables
+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_FLAG := $A7 ; 1 = cursor off
-CURS_BLINK := $A8 ; Blink counter
-CURS_CHAR := $A9 ; Character under the cursor
-CURS_STATE := $AA ; Cursor blink state
-SCREEN_PTR := $C4 ; Pointer to current char in text screen
-CURS_X := $C6 ; Cursor column
+KEY_COUNT := $9E ; Number of keys in input buffer
+RVS := $9F ; Reverse flag
+CURS_FLAG := $A7 ; 1 = cursor off
+CURS_BLINK := $A8 ; Blink counter
+CURS_CHAR := $A9 ; Character under the cursor
+CURS_STATE := $AA ; Cursor blink state
+SCREEN_PTR := $C4 ; Pointer to current char in text screen
+CURS_X := $C6 ; Cursor column
FNLEN := $D1 ; Length of filename
LFN := $D2 ; Current Logical File Number
-SECADR := $D3 ; Secondary address
-DEVNUM := $D4 ; Device number
-SCR_LINELEN := $D5 ; Screen line length
-CURS_Y := $D8 ; Cursor row
+SECADR := $D3 ; Secondary address
+DEVNUM := $D4 ; Device number
+SCR_LINELEN := $D5 ; Screen line length
+CURS_Y := $D8 ; Cursor row
FNADR := $DA ; Pointer to file name
-KEY_BUF := $26F ; Keyboard buffer
+; 80-Column CBMs
+KBDREPEAT80 := $E4
+KBDRPTRATE80 := $E5
+KBDRPTDELAY80 := $E6
+
+BASIC_BUF := $200 ; Location of command-line
+BASIC_BUF_LEN = 81 ; Maximum length of command-line
+
+KEY_BUF := $26F ; Keyboard buffer
+
+; 40-Column PETs/CBMs
+KBDRPTDELAY40 := $3E9
+KBDRPTRATE40 := $3EA
+KBDREPEAT40 := $3EE
+KBDREPEAT40B := $3F8
;----------------------------------------------------------------------------
; PET ROM type detection
;----------------------------------------------------------------------------
; Vector and other locations
-IRQVec := $0090
-BRKVec := $0092
-NMIVec := $0094
+IRQVec := $0090
+BRKVec := $0092
+NMIVec := $0094
; ---------------------------------------------------------------------------
; I/O: 6522 VIA2
-VIA := $E840
-VIA_PRB := $E840
-VIA_PRA := $E841
-VIA_DDRB := $E842
-VIA_DDRA := $E843
-
-
+VIA := $E840 ; VIA base address
+VIA_PB := VIA+$0 ; Port register B
+VIA_PA1 := VIA+$1 ; Port register A
+VIA_PRB := VIA+$0 ; *** Deprecated ***
+VIA_PRA := VIA+$1 ; *** Deprecated ***
+VIA_DDRB := VIA+$2 ; Data direction register B
+VIA_DDRA := VIA+$3 ; Data direction register A
+VIA_T1CL := VIA+$4 ; Timer 1, low byte
+VIA_T1CH := VIA+$5 ; Timer 1, high byte
+VIA_T1LL := VIA+$6 ; Timer 1 latch, low byte
+VIA_T1LH := VIA+$7 ; Timer 1 latch, high byte
+VIA_T2CL := VIA+$8 ; Timer 2, low byte
+VIA_T2CH := VIA+$9 ; Timer 2, high byte
+VIA_SR := VIA+$A ; Shift register
+VIA_CR := VIA+$B ; Auxiliary control register
+VIA_PCR := VIA+$C ; Peripheral control register
+VIA_IFR := VIA+$D ; Interrupt flag register
+VIA_IER := VIA+$E ; Interrupt enable register
+VIA_PA2 := VIA+$F ; Port register A w/o handshake