; INHERITED BOOT 0.02a bridge, through frozen keystone 0.10.
; Geometry preserved: 0C20 RCS template, 0C50 SYSCAL, 0C60 INKEY.
; CH08 r001 uses CRTKY; INKEY retained as baseline provenance/control.
OFFCHK: EQU     &H04EF
WORK1:  EQU     &H0CE6
SETBK:  EQU     &H0276
CRTKY:  EQU     &H0460
SYSCLR: EQU     &H3169
SETLCD: EQU     &H328F
SET4LN: EQU     &H28D8
CROFF:  EQU     &H22FA    ; C-ROM cursor display disable (BOOT precedent)
EDCSR:  EQU     &H08CB
KEYMD:  EQU     &H09E4
KYCNT:  EQU     &H09EC
SSPTP:  EQU     &H0FEF
USPTP:  EQU     &H0CE2
SSPBT:  EQU     &H0EEE
RCS:    EQU     SSPBT+16

        ORG     &H0C20

RCS_TOP:
        GST     UA,$6
        PHS     $6

        LDW     $6,SETBK-1
        PHSW    $7

        PST     UA,&H54
        JP      $28

_SYSCAL:
        PST     UA,&H45
        LDW     $6,&H0C10
        ST      $31,($6)

        CAL     RCS

        PST     UA,&H45
        LDW     $6,&H0C10
        LD      $28,3
        ST      $28,($6)

        PST     UA,&H54
        RTN
RCS_END:

        ORG     &H0C50

SYSCAL:
        PST     UA,&H55
        JP      RCS+(_SYSCAL-RCS_TOP)

; ======================================================================
; PROVENANCE REGION B - MIGRATED BOOT ROM CODE
; ORG 0C60 INKEY is migrated from BOOT ROM Rev. 0.02a.
; NOT NEW keystone APPLICATION CODE.
;
; BOOT ROM style INKEY routine.
;
; Returns:
;   $0  = translated key code, or 0 if no key
;   $17 = nonzero if a translated key was found
;
; The original BOOT ROM restores UA=&H54 after table access.  This
; experiment preserves that routine behavior and restores UA=&H14 in the
; caller immediately after every INKEY call, because keystone executes and
; reads its strings from the standalone-ROM context used by helloROM.s.
; ----------------------------------------------------------------------
        ORG     &H0C60

INKEY:
        CAL     OFFCHK
        LD      $17,$31
        LD      $0,&H4B

IKEYLP:
        PST     IA,$0

        GRE     KY,$1
        GRE     KY,$1

        DID     $2
        ANCW    $1,$1
        JR      Z,IKEY40

        SBC     $0,&H41
        JP      Z,&H0001

IKEY10:
        LD      $3,$31

IKEY20:
        BIDW    $2
        JR      C,IKEY30
        AD      $3,$30,IKEY20

IKEY30:
        LD      $5,$0
        SB      $5,$30
        BIU     $5
        BIU     $5
        LD      $4,$5
        BIU     $4
        BIU     $4
        SB      $4,$5

        PST     UA,&H44
        PRE     IX,KEYSCAN
        LDD     $0,(IX+$4)
        LDD     $0,(IX+$3)
        PST     UA,&H54
        JR      IKEY50

IKEY40:
        SB      $0,$30
        JR      LNZ,IKEYLP
        LD      $0,$31

IKEY50:
        AN      $0,$0
        JR      Z,IKEYRET
        LD      $17,$30

IKEYRET:
        LDW     $15,WORK1
        ST      $0,($15)
        RTN
