;
; Zero page variables and I/O definitions for the CBM 610
;
; Taken from a kernal disassembly done by myself in 1987.
;
; 1998-09-28, Ullrich von Bassewitz
; 2014-04-02, Greg King


; ---------------------------------------------------------------------------
; Zeropage stuff

ExecReg         := $00          ; Controls execution memory bank
IndReg          := $01          ; Controls indirect indexed load-store bank

TXTPTR          := $85          ; Far pointer into BASIC source code
FNAM            := $90          ; Far pointer to LOAD/SAVE file-name
FNAM_LEN        := $9D          ; Holds length of file-name

; ---------------------------------------------------------------------------
; Screen size

XSIZE           = 80
YSIZE           = 25

; ---------------------------------------------------------------------------
; I/O definitions


; I/O  $d800: CRTC 6545

.struct CRTC
        ADDR    .byte
        DATA    .byte
.endstruct


; I/O  $db00: CIA 6526, Inter Process Communication
;
;       IPCcia          =       $db00

.struct CIA
        PRA     .byte
        PRB     .byte
        DDRA    .byte
        DDRB    .byte
        .union
            .struct
                TALO    .byte
                TAHI    .byte
            .endstruct
            TA          .word
        .endunion
        .union
            .struct
                TBLO    .byte
                TBHI    .byte
            .endstruct
            TB          .word
        .endunion
        TOD10   .byte
        TODSEC  .byte
        TODMIN  .byte
        TODHR   .byte
        SDR     .byte
        ICR     .byte
        CRA     .byte
        CRB     .byte
.endstruct


; I/O  $dc00: CIA 6526
;
;       cia             =       $dc00


; I/O  $dd00: ACIA 6551
;
;       acia            =       $dd00

.struct ACIA
        DATA    .byte
        STATUS  .byte
        CMD     .byte
        CTRL    .BYTE
.endstruct


; I/O  $de00: Triport #1 6525
;
;       tpi1            =       $de00

.struct TPI
        PRA     .byte
        PRB     .byte
        .union
                PRC     .byte
                INT     .byte
        .endunion
        DDRA    .byte
        DDRB    .byte
        .union
                DDRC    .byte
                IMR     .byte
        .endunion
        CR      .byte
        AIR     .byte
.endstruct


; I/O  $df00: Triport #2 6525

;       tpi2            =       $df00


;-----------------------------------------------------------------------------

BASIC_BUF       := $FA5E        ; Bank 1 location of command-line
BASIC_BUF_LEN   = 162           ; Maximum length of command-line