; Apple Polisher app-specific viewer module.
VIEW_SCREEN:
        CAL     WAIT_RELEASE

        PRE     IX,WS_VTOP
        SBW     $20,$20
        STW     $20,(IX+$SX)

        PRE     IX,WS_VPTR
        LDW     $20,DATA
        STW     $20,(IX+$SX)

        CAL     DRAW_VIEW

VIEW_LOOP:
        CAL     INKEY
        AN      $17,$17
        JR      Z,VIEW_LOOP

        LD      $12,$0

        SBC     $12,FK1
        JR      Z,VIEW_UP

        SBC     $12,FK2
        JR      Z,VIEW_DOWN

        SBC     $12,FK3
        JR      Z,VIEW_BACK

        SBC     $12,FK4
        JR      Z,VIEW_EXIT

        SBC     $12,KEYUP
        JR      Z,VIEW_UP

        SBC     $12,KEYDN
        JR      Z,VIEW_DOWN

        SBC     $12,KEYEXE
        JR      Z,VIEW_EXIT

        SBC     $12,KEYMENU
        JR      Z,VIEW_EXIT

        CAL     WAIT_RELEASE
        JR      VIEW_LOOP

VIEW_BACK:
        CAL     WAIT_RELEASE
        JP      VIEW_RETURN

VIEW_EXIT:
        CAL     WAIT_RELEASE
        JP      VIEW_HOME

VIEW_UP:
        CAL     WAIT_RELEASE

        PRE     IX,WS_VTOP
        LDW     $20,(IX+$SX)
        ANCW    $20,$20
        JP      Z,VIEW_LOOP

        LDW     $22,4
        SBW     $20,$22
        STW     $20,(IX+$SX)

        PRE     IX,WS_MVAL
        LDW     $22,(IX+$SX)

        PRE     IX,WS_VPTR
        LDW     $24,(IX+$SX)
        SBW     $24,$22
        SBW     $24,$22
        SBW     $24,$22
        SBW     $24,$22
        STW     $24,(IX+$SX)

        CAL     DRAW_VIEW
        JP      VIEW_LOOP

VIEW_DOWN:
        CAL     WAIT_RELEASE

        PRE     IX,WS_VTOP
        LDW     $20,(IX+$SX)

        PRE     IX,WS_NVAL
        LDW     $22,(IX+$SX)

        LDW     $24,$20
        LDW     $26,4
        ADW     $24,$26
        SBCW    $24,$22
        JP      NC,VIEW_LOOP

        PRE     IX,WS_VTOP
        STW     $24,(IX+$SX)

        PRE     IX,WS_MVAL
        LDW     $22,(IX+$SX)

        PRE     IX,WS_VPTR
        LDW     $20,(IX+$SX)
        ADW     $20,$22
        ADW     $20,$22
        ADW     $20,$22
        ADW     $20,$22
        STW     $20,(IX+$SX)

        CAL     DRAW_VIEW
        JP      VIEW_LOOP

DRAW_VIEW:
        CAL     CLEAR_ALL

        PRE     IX,WS_NVAL
        LDW     $20,(IX+$SX)

        PRE     IX,WS_VTOP
        LDW     $22,(IX+$SX)

        SBW     $20,$22

        ADW     $22,$SY

        PRE     IX,WS_VPTR
        LDW     $24,(IX+$SX)

        PRE     IX,WS_MVAL
        LDW     $26,(IX+$SX)

        LD      $28,4
        LD      $29,0

DV_LOOP:
        ANCW    $20,$20
        RTN     Z

        AN      $28,$28
        RTN     Z

        LD      $6,$29
        CAL     VIEW_LINE

        SBW     $20,$SY
        ADW     $22,$SY
        ADW     $24,$26
        SB      $28,$30
        AD      $29,&H20
        JR      DV_LOOP

VIEW_LINE:
        PRE     IX,WS_VLINE

        LDW     $8,$22

        LDW     $10,&H03E8
        CAL     DEC_ST

        LDW     $10,&H0064
        CAL     DEC_ST

        LDW     $10,&H000A
        CAL     DEC_ST

        LD      $16,$8
        AD      $16,&H30
        STI     $16,(IX+$SX)

        LD      $16,":"
        STI     $16,(IX+$SX)

        LD      $13,9
        AN      $27,$27
        JR      NZ,VL_COUNT

        LD      $11,$26
        SBC     $11,10
        JR      NC,VL_COUNT

        LD      $13,$26

VL_COUNT:
        LDW     $14,$24
        LD      $18,5

VL_BYTES:
        AN      $13,$13
        JR      Z,VL_FILL

        LD      $16,&H20
        STI     $16,(IX+$SX)

        LD      $10,($14)
        ADW     $14,$SY
        CAL     HEX_ST

        AD      $18,3
        SB      $13,$30
        JR      VL_BYTES

VL_FILL:
        SBC     $18,32
        JR      NC,VL_PRINT

        LD      $16,&H20
        STI     $16,(IX+$SX)
        AD      $18,$SY
        JR      VL_FILL

VL_PRINT:
        PRE     IX,WS_VLINE
        LD      $13,32
        JP      PRINT_RAM

DEC_ST:
        LD      $12,0

DS_LOOP:
        SBCW    $8,$10
        JR      C,DS_OUT

        SBW     $8,$10
        AD      $12,$SY
        JR      DS_LOOP

DS_OUT:
        LD      $16,$12
        AD      $16,&H30
        STI     $16,(IX+$SX)
        RTN

HEX_ST:
        LD      $11,0

HS_LOOP:
        SBC     $10,&H10
        JR      C,HS_HIGH

        SB      $10,&H10
        AD      $11,$SY
        JR      HS_LOOP

HS_HIGH:
        LD      $16,$11
        CAL     HEX_ASCII
        STI     $16,(IX+$SX)

        LD      $16,$10
        CAL     HEX_ASCII
        STI     $16,(IX+$SX)
        RTN

HEX_ASCII:
        AN      $16,&H0F
        AD      $16,&H30
        SBC     $16,&H3A
        RTN     C
        AD      $16,&H07
        RTN

; Setup menu bindings.
; end of include
